转换为NSMutableattributed字符串时,Bad Access崩溃

时间:2015-07-23 10:12:09

标签: ios objective-c nsattributedstring

在进行解析时,我正在使用下面的代码行将HTML字符串数据转换为属性字符串文本,

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

但我的应用提供了不良访问权限 我收到了一个错误,

  

[NSHTMLWebDelegate retain]:发送到解除分配的实例的消息   0x7fa9fe027130

3 个答案:

答案 0 :(得分:2)

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

但如果你在ios 8.1,2或3上运行它,应用程序将崩溃。 为了避免崩溃,您可以做的是:在队列中运行它。所以它总是在主线上。

答案 1 :(得分:1)

如果您要在项目中发布strPlainText并使用ARC,则无需为strPlainText

发布版本

答案 2 :(得分:1)

使用此功能可以解决您的问题:(如果是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;

相关问题