2

在有人说这个话题被重复多次之前,请注意我真的不需要从网络加载远程图像(SDWebImage github解决方案),我正在尝试加载动态保存在文档文件夹中的图像,所以它们是当我想将它们加载到我的 tableView 上时,它们是本地的,通过 sqlite 表上的记录引用它们,我在其中保存了由代码生成的图像名称。

因此,在解析了我所有的 sqlite 数据之后,在我的 CellForRowAtIndexPath 方法中的某个时刻,我有以下代码行:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ...
    NSString *imageName = [[favorites objectAtIndex:[indexPath row]] objectForKey:@"imagename"];
    cell.image.image = [self loadImage: imageName]; // Is a custom cell so cell.image is a UIImageView, and I'm setting its image property
    ...
}

我的 loadImage 方法看起来像:

- (UIImage*)loadImage:(NSString*)imageName {

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", imageName]];

    return [UIImage imageWithContentsOfFile:fullPath];

}

另请注意,此代码确实有效,但向下滚动表格看起来很滞后。如何提高性能,我的意思是在后台加载图像,但图像已经存在。有人可以给我一个具体的解决方案吗?

只是让你知道,我正在使用 iOS 5 和 ARC。

任何帮助将不胜感激。

4

1 回答 1

0

首先减小您加载的图像的大小。

其次尝试使用 GCD 在 tableView:cellForRowAtIndexPath: 中加载图像。

于 2013-04-18T10:02:03.860 回答