Fel*_*ino 39 caching objective-c uiimage ios
众所周知,当使用该imageNamed:
方法加载图像时,UIImage缓存其图像数据.
来自Apple文档:https: //developer.apple.com/documentation/uikit/uiimage/1624146-imagenamed
imageNamed:
讨论:此方法在系统缓存中查找具有指定名称的图像对象,并返回该对象(如果存在).如果匹配的图像对象是不是已经在高速缓存中,这种方法加载从指定的文件中的图像数据,缓存 它,然后返回生成的对象.
因此,在加载了几个图像后,imageNamed:
我注意到内存使用量的大量增加,并且即使在加载图像的控制器被释放后,内存仍然保持使用.(当我分配相同的控制器时,至少它没有再增加)
这让我想知道是否有任何方法可以在我的应用程序生命周期的任何给定时间以编程方式清除UIImage使用的缓存,甚至可以控制一些缓存参数(例如,它可以使用的最大内存)
我知道,我可以很容易地通过解决这个问题initWithData
,imageWithData
,imageWithContentsOfFile
或其他任何初始化代替imageNamed
,但这种缓存行为,并使用几种图像时,如内部所需UITableView
.
有关如何实现这一点的任何想法?
编辑:经过一些答案后,我只想说清楚,需要做某事和有可能做某事之间存在巨大差距.正如我所指出的,我知道操作系统会为我处理缓存,我只是想看看iOS SDK带来的限制.
我无法手动清除此iOS托管缓存.一般来说,这是一个红鲱鱼.当操作系统为您管理某些内容时,您无需担心它.只要你正确地发布任何你分配/保留和适当处理内存警告的东西,你就会尽自己的一份力量.
答案取自凯文·洛评论
如果您可以使用私有 API(例如,在仅限 AdHoc 的应用程序中),请使用此UIImage
方法从缓存中删除所有图像
[UIImage _flushSharedImageCache];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17505 次 |
最近记录: |