在iOS中使用NSBlockOperation和NSOperationQueue进行延迟图像下载

时间:2012-10-18 02:28:52

标签: ios

我正在尝试使用我的应用程序中的tableview显示图像和文本,对于懒惰图像下载,我正在使用NSBlockOperation和NSOPerationQueue进行图像下载。这样所有的图像请求都将被添加到队列中并同时启动下载的图像。如果您等待几分钟到所有图像下载,它在登陆该页面时工作正常。如果一旦进入此屏幕并返回上一屏幕,应用程序就会崩溃。我能理解问题是屏幕不再存在。帮我!我该如何解决这个问题?

感谢您的帮助!!

Sri

3 个答案:

答案 0 :(得分:1)

如果您想异步下载图像,请在github上查看此存储库,并参考此blog希望这将解决您的问题。对于崩溃放一些代码。

答案 1 :(得分:0)

答案 2 :(得分:0)

解决方案正在使用此库,并且不需要您设置下载它,库自行处理 - SDWebImage

您只需要#import <SDWebImage/UIImageView+WebCache.h>到项目中,并且只需使用以下代码即可在下载图像时定义占位符:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
        static NSString *CellIdentifier;
        CustomCell *cell = [tableview dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

        MyObject *object = (MyObject *)[self.list.array objectAtIndex:indexPath.row];

        [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
                       placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

        return cell;
}

它还可以缓存下载的图像并为您提供出色的性能。