众所周知,当使用imageNamed:方法加载图像时,UIImage会缓存其图像数据.

来自苹果的文档:

imageNamed:

Discussion:此方法在

正因为如此,在用imageNamed:个图像加载多个图像后,我注意到内存使用量大幅增加,而且即使在加载图像的控制器解除锁定后,内存仍在使用.(至少当我分配同一个控制器时,它没有再次增加)

这让我想知道是否有任何方法可以在应用程序生命周期的任何给定时间以编程方式清除UIImage使用的缓存,甚至控制一些缓存参数(例如,它可以使用的最大内存)

我知道我可以通过使用initWithDataimageWithDataimageWithContentsOfFile或任何其他初始值设定项(而不是imageNamed)轻松解决这个问题,但当使用多个图像时,比如在UITableView中,这种缓存行为是需要的.

你有没有想过如何做到这一点?

编辑:

推荐答案

答案摘自Kevin Low条 comments


如果您可以使用private APIs(例如,在一个仅限临时使用的应用程序中),请使用此UIImage method从缓存中删除所有图像

[UIImage _flushSharedImageCache];

Objective-c相关问答推荐

如何在 NSImage CIFilter ObjC 周围创建边框

日期更改时的 UIDatePicker

我应该为 memcpy 和 realloc 包含什么标题?

如何使用 NSFileManager 删除目录及其内容

让 iPhone sleeping

如何将 NSDictionary 转换为 NSMutableDictionary?

如何知道 NSAssert 在发布版本中是否被禁用?

Objective-C 的 Eclipse 插件?

.m 文件中的空@interface 声明是做什么用的?

通过 ObjC 类别覆盖方法并调用默认实现?

CF 对象与 NS 对象

如何从 AVPlayer(不是 AVAudioPlayer)获取持续时间?

接口类型不能静态分配?

如何转储存储在 Objective-C 对象(NSArray 或 NSDictionary)中的数据

iOS6:supportedInterfaceOrientations 不起作用(被调用但界面仍然旋转)

如何将@selector 作为参数传递?

如何以编程方式移动 UIScrollView 以集中在键盘上方的控件中?

如何在 Objective-C 中创建一个空白的透明 png?

强制iOS应用程序崩溃的最快方法是什么?

目标 C:读取文本文件