rag*_*hul 20 caching objective-c uiimage ios
UIImage *img = [[UIImage alloc] initWithContentsOfFile:@"xx.jpg"]
UIImage *img = [UIImage imageNamed:@"xx.jpg"]
Run Code Online (Sandbox Code Playgroud)
在第二种类型中,图像会被缓存吗?
而在第一种类型中图像不会被缓存?
iHu*_*ter 29
在-initWithContentsOfFile:
没有缓存创建一个新的形象,这是一个普通的初始化方法.
该+imageNamed:
方法使用缓存.这是来自UIImage参考的文档:
此方法在系统缓存中查找具有指定名称的图像对象,并返回该对象(如果存在).如果匹配的图像对象尚未在缓存中,则此方法从指定的文件加载图像数据,对其进行缓存,然后返回结果对象.
UIImage将保留加载的图像,使其保持活动状态,直到低内存条件将导致清除缓存.
更新Swift:
在Swift中,该UIImage(named: "...")
函数是缓存图像的函数.
只是想留下这个来帮助处理路径名问题.这是一种可以放在UIImage
类别上的方法.
+(UIImage *)imageNamed:(NSString *)name cache:(BOOL)cache {
if (cache)
return [UIImage imageNamed:name];
name = [[NSBundle mainBundle] pathForResource:[name stringByDeletingPathExtension] ofType:[name pathExtension]];
UIImage *retVal = [[UIImage alloc] initWithContentsOfFile:name];
return retVal;
}
Run Code Online (Sandbox Code Playgroud)
如果你没有一种简单的方法来切换到缓存,你可能最终只使用`imageNamed.在大多数情况下,这是一个很大的错误.有关更多详细信息,请参阅此优秀答案(并提出问题和答案!).
归档时间: |
|
查看次数: |
13106 次 |
最近记录: |