一般我们加载项目中的图片会使用以下两种方式:
1.imagedNamed
2.imageWithContentsOfFile初始化
1.imageNamed:
该方法用于加载小图片/使用频率高的图片
此方法加载过得图片, 在App运行期间, 始终会保有缓存, 这个缓存是由系统管理的, 无法通过代码销毁缓存
当系统察觉到内存消耗过高, 就会自动释放这部分内存
Search for an object whose name was set explicitly using the setName: method and currently resides in the image cache.
该方法首先会从图片内存中查找
Search the app's main bundle for a file whose name matches the specified string.
如果没有找到, 就在App的mainBundle中查找
Search the Application Kit framework for a shared image with the specified name.
如果bundle中也没有, 就会去framework的库中寻找
2. imageWithContentsOfFile
该方法用于加载大图片/使用率较低的图片
它只是加载一次图片, 并且不会做缓存, 当对象释放的时候, 内存也就被释放掉了
因此对于不常用的图片应该使用这个方法
其中:imagedNamed默认加载成功后会在内存中缓存图片。而imageWithContentsOfFile仅仅加载图片,不缓存。
当大量使用imageNamed方式会在不需要缓存的地方增加CPU的开销,如果应用程序需要加载一张比较大的图片并且使用一次性,那么其实是没有必要去缓存这个图片的,用imageWithContentsOfFile是最为经济的方式,这样不会因为UIImage元素较多情况下,CPU会被逐个分散在不必要缓存上浪费过多时间。
imagedNamed是加载当前boundle中的图片。
网友评论