Nsattributedstring заморозить UITableView
Приложение действительно замерзает при прокрутке с помощью NSAttributedString (когда я использую NSString, это работает нормально), поэтому там мой метод:
- (void)setSubtitleForCell:(TTTableViewCell *)cell item:(TTPhotoPost *)item
{
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData:
[item.caption dataUsingEncoding:NSUnicodeStringEncoding]
options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }
documentAttributes:nil
error:nil];
[cell.descriptionLabel setAttributedText:attributedString];
}
Какие-нибудь ошибки есть? или каким-то образом сделать АТТ.струна быстрее?
2 ответа:
Я бы предложил создать
NSAttributedString
из HTML один раз асинхронно и сохранить приписываемую строку в вашей модели. Таким образом, вам не придется выполнять преобразование HTML -> attributed string при повторном использовании каждой ячейки, что часто происходит при прокрутке.
Сделайте это асинхронно (я думаю, что проблема связана с тем, что scroll view также использует основной поток):
- (void)setSubtitleForCell:(TTTableViewCell *)cell item:(TTPhotoPost *)item { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData: [item.caption dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil]; dispatch_on_main_queue(^{ [cell.descriptionLabel setAttributedText:attributedString]; }); }); }