转换为NSMutableattributed字符串时,Bad Access崩溃
在进行解析时,我使用下面的代码行将HTML字符串数据转换为属性字符串文本,
obj.strPlainText=[[NSMutableAttributedString alloc] initWithData:[obj.strContent dataUsingEncoding:NSUTF8StringEncoding]
options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute:@(NSUTF8StringEncoding)}
documentAttributes:nil
error:nil];
但我的应用程序给访问不好我得到一个错误,
[NSHTMLWebDelegate retain]:发送到释放实例0x7fa9fe027130的消息
[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)} documentAttributes:nil error:nil];
但是,如果您在ios 8.1,2或3上运行它,应用程序会崩溃。为了避免崩溃,您可以执行的操作是:在队列中运行它。 所以它总是在主线上。
如果你正在发布strPlainText
并且在你的项目中使用ARC,那么不需要为strPlainText
编写发布
使用这将解决您的问题,我认为:(如果它是7.0+)
NSError* error;
NSMutableAttributedString* str = [[NSMutableAttributedString alloc] initWithData:[source dataUsingEncoding:NSUTF8StringEncoding]
options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]}
documentAttributes:nil error:&error];
您必须将str设置为obj.strPlainText,如obj.attributedString = str;
上一篇: Bad Access crash while converting to NSMutableattributed string