UIImage初始化一张图片有几种方法?简述各自的优缺点。

2017-09-13 12:32:40来源:CSDN作者:qq_39221714人点击

分享

作者:Loving_iOS

转载请标明出处:http://blog.csdn.net/loving_ios/article/details/49948539

方法一、

UIImage *image = [UIImage imageNamed:@"test.png"];

这个方法创建的图片是从缓存里面获取的,先在缓存里查看,看是不是有这个图片,没有的话见图片添加到缓存再使用。有的话直接使用缓存里面的。在程序中,如果这个图片要在多个地方使用的话,建议使用这个方法。缺点是:一旦加入到缓存中就一直占用内存,不能被释放掉。

方法二、

//读取本地图片路径

NSString *imagePath=[NSString stringWithFormat:@"%@/Documents/

%@.jpg",NSHomeDirectory(),@"test"];

[UIImage imageWithContentsOfFile:imagePath];

从手机本地读取,比较第一种方式,这个是直接加载图片的,图片不需要的时候,可以release掉。所以建议在使用重复率低的地方使用这种方法。

方法三、

// 下面的这种方式会出现卡线程的情况,所以建议在子线程中操作
// imageWithData: data

NSURL *url = [NSURL URLWithString:@“http://e.picphotos.baidu.com/album/s%3D550%3Bq%3D90%3Bc%3Dxiangce%2C100%2C100/sign=f51d2708cb11728b342d8c27f8c7b2f3/bba1cd11728b47109d0f5555c5cec3fdfc032302.jpg?referer=f55e30e2d71373f0ac285aaf8d00&x=.jpg"];

UIImage *image2 = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];

需要注意的是,如果imageWithData:是同步网络请求,如果在主线程直接使用的话,会卡主线程,因此一般不会在主线程中直接使用,而是采用异步网络请求获得data的值

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台