我是内存管理代码的新手,但我很好地理解了这个想法。
在通过 XCode 中的泄漏工具获取我的应用程序时,我注意到我只需要清理我的自定义对象,而不是例如动态创建的数组,所以我认为这些数据类型是自动释放的——因为我只需要释放数组我用作对它们有(保留)的属性。
然后我注意到一些奇怪的事情:我在某个初始化的数组上出现了泄漏,如下所示:
NSMutableArray *removals = [NSMutableArray new];
但不是类似的
NSMutableArray *removals = [NSMutableArray arrayWithCapacity:9];
现在,一个设置为“新”的原因是它可以有 0-99 个项目,而我知道的另一个总是 9。由于两个数组稍后根据用户传递给相同的方法交互时,如果我没有在方法结束时释放,或者如果我释放了异常,我会得到泄漏!
我将第一个数组更改为
NSMutableArray *removals = [NSMutableArray arrayWithCapacity:99];
我没有泄漏,也不必释放任何东西。谁能解释一下?