【发布时间】:2010-12-08 13:31:25
【问题描述】:
我正在开发一个 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();
}
非常感谢任何有帮助的提示或代码以简单而优雅的方式完成此任务的人。
【问题讨论】:
标签: iphone core-data concurrency uitableview addressbook