Я показываю различные типы содержимого в tableview и вычисляю высоту каждой ячейки с использованием разных пользовательских методов в heightForRowAtIndexPath.
Один из этих пользовательских методов подразумевает преобразование некоторого html в NSMutableAttributedString, а затем вычисление высоты этого NSMutableAttributedString.
Для преобразования html я использую новый метод initWithData:.
Все работает отлично, за исключением случаев, когда я поворачиваю экран = > У меня есть exc_bad_access каждый раз.
Используя инструменты/зомби, я смог найти ошибку, и на самом деле это initWithData:.
(Когда я удаляю этот метод и создаю "простой" NSMutableAttributedString с initWithString, я могу изменить ориентацию столько раз, сколько захочу, а не crash).
Любая идея, почему?
(Кстати, мой проект использует ARC)
Инструмент/Зомби скриншот:

Пользовательский метод, вызываемый в heightForRowAtIndexPath:
< УтилитыForFrontEndUI 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 to NSMutableAttributedString:
< УтилитыForFrontEndUI formatRawFacebookContentForFrontEndRichTextContents: >
+(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;
}