1.[uiimage imageWithName:XXX],
只适合只适合UI界面中小的贴图读取,而一些比较大的资源文件应该避免使用这个接口。
2.[UIImage imageWithContentsOfFile]
直接读取文件路径来解决图片的读取问题。这两种方式的主要区别在于:imageName的方式会在使用的时候系统会cache,程序员是无法处理cache的,这是由系统自动处理的,对于重复加载的图像,速度会提升很多,这样反而用户体验好。所以如果某张图片需要在应用中使用多次,或者重复引用,使用imageName的方式会更好imageWithContentsOfFile的方式,在使用完成之后系统会释放,不会缓存下来,所以也就没有这样的问题。一般也不会把所有的图片都会缓存。有些图片在应用中只使用一两次的,就可以用这样的方式,比如新手引导界面的图片等等,就适合这样的方式。没有明显的界限。
3.两种方式对ipa包大小的影响

[uiimage imageWithName:XXX]

在Assets.xcassets中的5张图片,在Assets.xcassets中的图片打包ipa之后在Assets.car中, 可以通过工具解压Assets.car文件, 可以看出打包之后的图片大小和命名和之前并不相同,打包之后图片都变大了, 苹果爸爸具体做了什么操作不清楚哦!
在打包之后生成了10张, (5张均是1x图, 可以判断苹果又自动生成了相应的2x图)

[UIImage imageWithContentsOfFile]

图中5张图片的大小打包前是1.5M
Assets.car解压工具: https://github.com/chenjie1219/cartool
我在使用的时候有点问题, 按照以下步骤操作的,(没问题的就不用参考了)

在ipa瘦身的时候参考图片的两种加载方式哦
网友评论