美文网首页
【IOS】UIImage imageNamed方法的误用

【IOS】UIImage imageNamed方法的误用

作者: 程序猿李墨 | 来源:发表于2018-09-07 13:54 被阅读0次

    imageWithName与imageWithContentsOfFile

    一  图片加载有以下两种方式:

    +(UIImage*)imageNamed:(NSString*)name  

    +(UIImage*)imageWithContentsOfFile:(NSString*)name

    两种方式有何区别,在查阅官方文档后发现以下解释:

    imageNamed:在加载图片时会根据名字在主目录中查找,首先会在内存缓存中查找,如果没有再从磁盘获取,之后系统会缓存该图片到内存。

    如果使用频率较低的图片,或者想要保证图片不会增加内存占用,可以改用imageWithContentsOfFile:。该函数系统不会自动缓存。

    举个例子界面A有5张图片,界面B有5张图片,用户从A到B再回到A之后,imageNamed:加载方式会产生10张图的缓存,但是imageWithContentsOfFile:在退出B时清理掉B的图片缓存,回到A时只有5张图片的缓存。

    imageNamed

    优点:

    1. 系统自带缓存机制

    2. 频繁使用加载速度快

    缺点:

    1. 内存占用增加

    2. 缓存由系统控制,不可控

    imageWithContentsOfFIle

    优点:

    1. 内存释放时机可控

    2. 内存占用少

    缺点:

    1. 加载速度稍慢

    2. 没有缓存机制,需要自己实现

    综上所述,如果加载较大图片,或者不常用页面的图片时,可以使用imageWithContentsOfFile:,这样可以避免由于图片缓存导致APP内存占用过大;在一些常用页面的一些常用图片,为了提高加载速度,可以考虑使用imageNamed:,但是用imageNamed:加载图片会导致内存占用的不可控制,系统自己的缓存不能用代码控制去清理。因此还是建议主要使用imageWithContentsOfFIle:的方式加载图片,特别是一些较大的图。

    【IOS】UIImage imageNamed方法的误用

    二、非缓存的加载方式

    +(UIImage *)imageWithContentsOfFile:(NSString *)path

    +(UIImage *)imageWithData:(NSData *)data

    三、何时使用imageNamed方法

    1、采用imageNamed方法的图片加载情况

    图片资源反复使用到,如按钮背景图片的蓝色背景,这些图片要经常用到,而且占用内存少

    2、不应该采用的情况:

    (1)图片一般只使用一次,如一些用户的照片资源

    (2)图片资源较大,加载到内存后,比较耗费内存资源

    相关文章

      网友评论

          本文标题:【IOS】UIImage imageNamed方法的误用

          本文链接:https://www.haomeiwen.com/subject/jfkcgftx.html