【发布时间】:2010-11-16 05:10:40
【问题描述】:
我是内存管理代码的新手,但我很清楚这个想法。
在通过 XCode 中的泄漏工具使用我的应用程序时,我注意到我只需要清理我的自定义对象,而不是例如动态创建的数组,因此我认为这些数据类型是自动释放的 - 因为我只需要释放我用作具有(保留)属性的数组。
然后我注意到一些奇怪的事情:我在某个像这样初始化的数组上出现泄漏:
NSMutableArray *removals = [NSMutableArray new];
但不是类似的
NSMutableArray *removals = [NSMutableArray arrayWithCapacity:9];
现在,一个设置为“new”的原因是它可以有 0-99 个项目,而我知道的另一个总是 9。因为两个数组稍后都传递给同一个方法根据用户交互,如果我没有在方法结束时释放,或者如果我释放了,我会得到泄漏!
我把第一个数组改成
NSMutableArray *removals = [NSMutableArray arrayWithCapacity:99];
我没有泄漏,也不必释放任何东西。谁能解释一下?
【问题讨论】:
标签: iphone objective-c xcode release retain