2015-07-23 8 views
6

Mentre si fa l'analisi sto convertendo i dati di stringa HTML in testo stringa attribuito usando sotto le righe di codice,incidente accesso inappropriato durante la conversione a NSMutableattributed stringa

obj.strPlainText=[[NSMutableAttributedString alloc] initWithData:[obj.strContent dataUsingEncoding:NSUTF8StringEncoding]  
                  options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType, 
                   NSCharacterEncodingDocumentAttribute:@(NSUTF8StringEncoding)} 
               documentAttributes:nil 
                  error:nil]; 

ma la mia applicazione dà accesso male Ricevo un errore,

[NSHTMLWebDelegate conservano]: messaggio inviato a un'istanza deallocato 0x7fa9fe027130

+0

avevo anche avuto lo stesso problema :( – Nayan

risposta

1

se il vostro stanno rilasciando strPlainText e anche utilizzando ARC nel progetto, allora non c'è bisogno di scrivere rilasciare per strPlainText

+0

Non ho scritto codice unico della linea per il rilascio di strPlaintext & mio progetto è ARC. – Kalyani

1

Usando questo risolverà il problema penso: (se è 7.0+)

NSError* error; 
NSMutableAttributedString* str = [[NSMutableAttributedString alloc] initWithData:[source dataUsingEncoding:NSUTF8StringEncoding] 
            options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, 
            NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]} 
            documentAttributes:nil error:&error]; 

È necessario impostare str al obj.strPlainText come obj.attributedString = str;

+0

ancora non funziona .. :( – Kalyani

2
[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)} documentAttributes:nil error:nil]; 

Ma l'app si arresta in modo anomalo se la si esegue su ios 8.1,2 o 3. Per evitare l'arresto anomalo, ciò che si può fare è: eseguirlo in una coda. In modo che sia sempre sul thread principale.