iOS中imageNamed,imageContentsOfFile和initWithContentsFile的使用

一, [UIImage imageNamed]

UIImage * image0 = [UIImage imageNamed:@"111"];

此方法是很常用的方法,是从 [NSBundld  mainBundle]上部查找图片,然后加载到图片到内存的缓存中,加到缓存的好处是能够快速的加载图片,如果该图片在其他地方也经常使用,建议使用imageNamed.

但是使用该方法创建的对象在被autoReleasePool释放的时候,内存里的图片缓存是不释放的.而且是没有明确的释放方法.所以,如果图片比较大,用这种方法会消耗很大的内存.

图片缓存,对象是被autoreleasePool释放的时候释放.

二, [UIImage imageWithContentsOfFile]

UIImage * image1 = [UIImage imageWithContentsOfFile:@"1111"];

此方法加载的图片是不会缓存的.得到的对象是autoRelease的,当autoReleasePool释放对象时才释放内存.

图片不缓存,对象被autoreleasePool释放的时候释放.

三, [[UIImage alloc] initWithContentsFile]

UIImage * image2 = [[UIImage alloc] initWithContentsOfFile:@"111"];

此方法是手动Release的,系统不缓存.对象release之后立即释放.一般用于封面等图片比较大的地方.

图片不缓存,对象被release之后立即释放.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 内存管理 简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与a...
    丶逐渐阅读 6,067评论 1 16
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,400评论 30 472
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,755评论 0 6
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,075评论 25 709
  • -(void)viewDidLoad{// self.view.window == nil;} (void)vie...
    kDurian阅读 2,087评论 0 0

友情链接更多精彩内容