OC图片的异步加载

OC图片的异步加载先来看一下用UIImage加载本地图片的常用方法:

OC图片的异步加载"

先来看一下用UIImage加载本地图片的常用方法:

1)用imageNamed方法

[UIImage imageNamed: @“hello.png”];

图像会加载到缓存。没有明确的释放方法。


2)用imageWithContentsOfFile方法

NSString *thumbnailFile = [NSString stringWithFormat:@“%@/%@.png”,[[NSBundle mainBundle] resourcePath], fileName];UIImage *thumbnail = [UIImage imageWithContentsOfFile: thumbnailFile];

不会缓存,得到的对象会自动释放。


3)用initWithContentsFile方法

UIImage *image = [[UIImage alloc] initWithContentsFile:ImagefilePath];

不系统缓存,需要手动release。


然而以上方法的直接使用对于需要加载多图的ViewController来说,这些方法的使用会导致线程阻塞,使得app无法正常运行。此时需要进行图像的异步加载。

1) 使用第三方库

这里推荐EGOImageView,它能够很容易地实现多图的异步加载。该类库的使用方法和注意事项请参考此处

2) 不使用第三方库

一般我们会从网络加载图片到本地视图。

NSURL  *url = [NSURL URLWithString:@"http://i3.cdn-image.com/__media__/pics/672/nav-sidebar-bg.jpg"];UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:url];

OC中可以采用dispatch_async来进行异步加载。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSData *data = [NSData dataWithContentsOfURL:imgUrl];//加载图片;
        dispatch_async(dispatch_get_main_queue(), ^{
            [cell.goodsImage setImage:[UIImage imageWithData:data]];
                                      });//异步从网络加载图片
    });

今天的文章OC图片的异步加载分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/28732.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注