我有一个 NSManagedObject,其中的图片存储在某处,例如/var/mobile/Applications/.../.../uniqueIDforNSMO/Pictures/
通过根据 NSMO 的 uniqueID 找到这些图片,我可以毫无问题地从磁盘中取出这些图片,我有一个 DataController 可以为我提取它们,而且性能非常好。但是当我尝试将这些图片添加到视图时遇到问题,UI 被阻止。我怀疑问题在于这些图像的分辨率非常高(它们是来自 iPad 相机胶卷的图像)。
显示 5 张图像大约需要 3 秒,从而使 UI 被阻止。即使只显示 2 张图像也会阻止该死的 UI。这是我在后台线程上添加它们的方法:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
UIImage *image = [self.photos objectAtIndex:index];
dispatch_async(dispatch_get_main_queue(), ^{
cell.imageView.image = image;
});
});
如果我设置 imageView.image 而不调度它需要更长的时间。
问题可能是图像太大,而单元格的 imageViews 只有 150x150?还是因为我一开始只有对图像的引用,所以图像的实现是慢的部分?
任何人都可以在这里提出任何建议吗?我曾尝试在图像返回数组之前调整图像大小,但这没有帮助。