先来看一下用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