【发布时间】:2010-06-02 18:12:09
【问题描述】:
在我的根视图控制器中,在我的 didReceiveMemoryWarning 方法中,我检查了几个数据结构(我将它们保存在一个名为 DataManager 的全局单例中),并丢弃了我拥有的最重的东西——一个或两个相关联的图像可能有二十、三十或更多的数据记录。
现在我正在经历并将这些设置为零。我还为自己设置了一个布尔标志,以便需要这些数据的各种视图控制器可以很容易地知道重新加载。因此:
DataManager *data = [DataManager sharedDataManager];
for (Event *event in data.eventList) {
event.image = nil;
event.thumbnail = nil;
}
for (WondrMark *mark in data.wondrMarks) {
mark.image = nil;
}
[DataManager sharedDataManager].cleanedMemory = YES;
不过,今天我在想……我实际上并不确定当我这样做时所有分配的内存是否真的被释放了。我是否应该改为 release 这些图像,并在以后再次需要它们时用新的 alloc 和 init 击中它们?
【问题讨论】:
标签: objective-c iphone memory-management