Я работаю над приложением для iPhone, которое отображает миниатюрные изображения из контактов в UITableView.
Все очень быстро, пока я не включаю миниатюры, затем прокручивается очень медленно.Все остальные данные поддерживаются Core Data, и я попытался заранее сохранить изображения в Core Data, но это само по себе занимает слишком много времени во время запуска и менее гибко и т. Д.
Что мне действительно нужно, так это способвыполняйте миниатюры поиска и подготовки лениво с помощью отдельного потока или NSOperation и т. д., но я не уверен, каким будет самый простой способ сделать это.
Пример проекта Apple LazyTableImages, который является фантастическим, если изображения приходят из Интернетаконечно, может быть адаптирован, хотя мне тяжело с этим.По сути, проблема та же, но вместо временной задержки загрузки, задержки в сети и т. Д. Моя задержка - это просто время, необходимое для поиска изображений в адресной книге пользователя.
Это задача в моем подклассе ячеек таблицы, которую мне нужно выполнить одновременно:
UIImage *contactImage = nil;
if (ABPersonHasImageData(person)) {
NSData *contactImageData = (NSData*)ABPersonCopyImageData(person);
UIImage *tempContactImage = [UIImage imageWithData:contactImageData];
[contactImageData release];
UIGraphicsBeginImageContext(CGSizeMake(45.0f, 45.0f));
[tempContactImage drawInRect:CGRectMake(0.0f, 0.0f, 45.0f, 45.0f)];
contactImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
Огромное спасибо всем, кто имеет какие-либо полезные советы или код для выполнения этого простым и элегантнымпуть.