
UIImage *image = [UIImage imageNamed:@“xxx”]
NSString *filePath = [[NSBundle mainBundle] pathForResource:@“xxx” ofType:@“xxx”]
UIImage *image = [UIImage imageWithContentsOfFile:filePath]
imageNamed 方法会自动缓存新加载的图片并重复利用,推荐用于尺寸较小并且反复使用的图片资源。imageNamed先根据指定的图片资源名在系统缓存中搜索图片资源,找到返回,找不到就到硬盘中重新加载图片并缓存。
imageWithContentsOfFile 方法直接根据路径加载图片,没有缓存和取缓存的过程,将图片转化成数据对象进行加载,推荐用于尺寸很大但不常用的图片。imageWithContentsOfFile不可以直接加载Assets里的图片,需要将图片拖入工程目录。
imageNamed默认加载图片成功后会内存中缓存图片,这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象.如果缓存中没有找到相应的图片对象,则从指定地方加载图片然后缓存对象,并返回这个图片对象.多了就有问题。一般加上AutoReleasePool
imageWithContentsOfFile则仅只加载图片,不缓存.大量使用imageNamed方式会在不需要缓存的地方额外增加开销CPU的时间来做这件事.当应用程序需要加载一张比较大的图片并且使用一次性,那么其实是没有必要去缓存这个图片的,用imageWithContentsOfFile是最为经济的方式,这样不会因为UIImage元素较多情况下,CPU会被逐个分散在不必要缓存上浪费过多时间.。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)