美文网首页
imageNamed和imageWithContentsOfFi

imageNamed和imageWithContentsOfFi

作者: gpylove | 来源:发表于2018-10-30 15:33 被阅读29次

 imageNamed:

      a.只需传入文件名.扩展名(可选)即可,会缓存数据,相同的图片,不会重新加载

      b.就算指向它的指针被销毁,该资源也不会被从内存中干掉

      c.加载到内存中后,占据内存空间较大,占用的内存归系统管理,我们无法管理

      d. 放到Assets.xcassets的图片,默认就有缓存,图片被压缩

 imageWithContentsOfFile:

     a.必须传入文件的全名(全路径+文件名),不缓存数据,相同的图片会被重复加载到内存中

      b.对象销毁的时候,加载到内存中得图片会被一起销毁

      c. 放到项目main bundle中的图片默认不缓存,图片没有被压缩

      d.不能加载Assets.xcassets中的图片,获取不到路径

结论:

(1)用imageNamed的方式加载时,系统会把图像缓存到内存,如果图片较小,并且频繁使用的图片,使用imageNamed来加载图片(按钮图片/主页图片/占位图)。如果图像比较大,或者图像比较多,用这种方式会消耗很大的内存,而且释放图像的内存是一件相对来说比较麻烦的事情。对于同一个图像系统只会把它缓存到内存一次,这对于图像的重复利用是非常有优势的。

(2)用imageWithContentsOfFile方式加载时,图像会被系统以数据方式加载到程序,如果图片较大,并且使用次数较少,使用 imageWithContentsOfFile来加载(相册/版本新特性)。当你不需要重用该图像,或者你需要将图像以数据方式存储到数据库,又或者你要通过网络下载一个很大的图像时,请尽量使用imageWithData的方式加载图像。 

小知识:Assets.xcassets

Assets.xcassets在app打包后,以Assets.car文件的形式出现在bundle中。其作用在于:

1.自动管理图片,自动识别@2x,@3x图片

2.管理应用的AppIcon和LaunchImage图片

3.可以对图片进行剪裁和拉伸处理(Slicing)

4.其中的图片资源只能通过imageNamed方法加载,通过NSBundle的pathForResource:ofType:无法获得图片路径

5.适合存放系统常用的,占用内存小的图片资源

6.在Assets.xcassets中添加颜色

7.在Assets.xcassets中使用矢量图

相关文章

网友评论

      本文标题:imageNamed和imageWithContentsOfFi

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