我正在调试一个在Instrument中使用ARC的应用程序。似乎如果Object A
包含一个包含Object B
的数组,我需要在实例变量removeAllObjects
上显式调用contents
方法,这是一个NSArray
。
- (void)dealloc {
NSLog(@"%@ deallocing", self);
[_contents removeAllObjects];
}
如果我要注释掉行[_contents removeAllObjects]
,Instruments会显示在释放父对象后,数组中包含的对象仍然存在。我想当NSArray
解除分配时,它会自动减少其中包含的元素的保留计数。为什么需要明确删除呢?这种行为是调试本身的副作用吗?
答案 0 :(得分:3)
通常:
如果我不得不猜测,你正在某个块中使用数组中的对象。使用ARC,块是内存泄漏的主要来源。
您在何处或如何使用数组中的数组和对象?