0

我将相册中的图像作为 NSData 存储在我的应用程序文档目录中,而不是在 UITableView 中显示它们。我有性能问题。将图像保存到应用程序目录需要几秒钟的时间,并且在将它们加载到 TableView 时我遇到了同样的问题。这是我存储图像的代码:

//Convert UIImage to NSData
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];

//Save image to app documents directory
NSError *error;
[imageData writeToFile:fullImagePath options:NSDataWritingAtomic error:&error];

这就是我将它们加载到 UITableView 中的方式:

NSData *imageData = [NSData dataWithContentsOfFile:path];
UIImage *myImage = [UIImage imageWithData:imageData];

cell.imageView.image = myImage;

什么可能导致这些性能问题?是否有任何其他方式可以从应用程序文档目录中存储和检索图像?

4

1 回答 1

7

两种方法:

首先,您可能会考虑在保存图像之前缩小图像,或者保存一个额外的较小副本以在表格视图中显示。这取决于您需要多好的图像 - 可能是表格视图不如具有 MB 数据的全尺寸图片那么大。实际上,如果适当缩放图像,它们也会看起来更好。这本身就应该解决延迟问题。

其次,您可以考虑异步加载图像。维护要下载的可变图像数组。创建一个执行下载并在完成时通知表视图的单例。cell.imageView.image在通知(或委托)回调中设置。

于 2013-02-28T21:30:20.880 回答