NSMutableAttributedString initWithData: вызывает EXC_BAD_ACCESS при вращении
Я отображаю различные типы содержимого вtableview
и рассчитать высоту каждой ячейки, используя различные пользовательские методы, дюймыheightForRowAtIndexPath
Один из этих пользовательских методов подразумевает преобразование некоторого HTML вNSMutableAttributedString
, а затем рассчитать высоту этого.NSMutableAttributedString
Для преобразования HTML я использую новыйinitWithData:
метод.
Все работает отлично, за исключением случаев, когда я поворачиваю экран => Я 'у нас есть exc_bad_access каждый раз.
Используя инструменты / зомби, яудалось найти ошибку, и на самом деле это 'с этим.initWithData:
(Когда я удаляю этот метод и создаюпросто" NSMutableAttributedString
сinitWithString
Я могу менять ориентацию столько раз, сколько захочу, нетcrash
больше).
Есть идеи почему?
(Кстати, мой проект использует ARC)
Скриншот инструмента / зомби:
Пользовательский метод вызывается: <heightForRowAtIndexPath
UtilitiesForFrontEndUI:>heightForFacebookAttributedText
+(CGFloat)heightForFacebookAttributedText:(NSString *)attributedText withWidth:(CGFloat)width
{
NSAttributedString *formatedText = [self formatRawFacebookContentForFrontEndRichTextContents:attributedText];
CGRect rect= [formatedText boundingRectWithSize:CGSizeMake(width, 1000) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];
return ceilf(rect.size.height);
}
Пользовательский метод, использующий initWithData для HTML дляNSMutableAttributedString
преобразование: <
UtilitiesForFrontEndUIformatRawFacebookContentForFrontEndRichTextContents:
>
+(NSAttributedString *)formatRawFacebookContentForFrontEndRichTextContents:(NSString *)stringToFormat
{
// THIS GENERATE EXC_BAD_ACCESS ON DEVICE ROTATION (WORKS IF NO ROTATION)
NSData *dataContent = [stringToFormat dataUsingEncoding:NSUTF8StringEncoding];
NSMutableAttributedString *richTxtContent = [[NSMutableAttributedString alloc] initWithData:dataContent options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]} documentAttributes:nil error:nil];
NSRange myRange;
myRange.location = 0;
myRange.length = richTxtContent.length;
[richTxtContent addAttributes:[self commonAttributesForFrontEndRichText] range:myRange];
return richTxtContent;
}
Если я заменю initWithData на простой initWithString, то больше не будет exc_bad_access
+(NSAttributedString *)formatRawFacebookContentForFrontEndRichTextContents:(NSString *)stringToFormat
{
// THIS WORKS (NO MORE ROTATION CRASH)
NSMutableAttributedString *richTxtContent = [[NSMutableAttributedString alloc]initWithString:stringToFormat];
NSRange myRange;
myRange.location = 0;
myRange.length = richTxtContent.length;
[richTxtContent addAttributes:[self commonAttributesForFrontEndRichText] range:myRange];
return richTxtContent;
}