【发布时间】:2012-02-26 13:25:28
【问题描述】:
我正在优化我的应用程序并确保正确实施内存管理。当我发现 didUnload / dealloc / willAppear 对于实现我的内存清理不可靠时,我决定实现我自己的方法,这样我就可以完全控制这个内存管理。
在头文件中定义我的数组
@property (retain) NSMutableArray *selectedCardIDs;
@property (retain) NSMutableArray *selectedRowArray;
@property (retain) NSMutableArray *cardArray;
@property (retain) NSMutableArray *cardIDArray;
这里是发布方法:
- (void) willReleaseObjects {
[self.aCopyOfCardIDArray release];
[self.listOfItems release];
[self.aCopyListOfItems release];
[self.selectedCardIDs release];
[self.selectedRowArray release];
[self.cardArray release];
[self.cardIDArray release];
}
数组可以变得非常大(每个 > 1'000 个条目),为什么在卸载视图后释放这些数组是必不可少的。我在IBAction方法中显式调用了这个函数,如:
- (IBAction) stopDictionary:(UIBarButtonItem *) sender {
[self closeDatabase];
[self willReleaseObjects];
[self dismissModalViewControllerAnimated:YES];
}
我调试了代码,它实际上是在执行每个版本,但是当我用 Instruments 诊断内存分配时,它似乎只释放了部分内存,实际上几乎没有为什么每次我加载它时内存消耗都会增加再看一遍,一点都不好。 任何想法,为什么我的记忆没有在这里释放?谢谢。
【问题讨论】:
标签: ios memory-management