我正在调试一个在 Instrument 中使用 ARC 的应用程序。似乎如果Object A
包含一个包含Object B
s 的数组,我需要removeAllObjects
在实例变量上显式调用方法contents
,这是一个NSArray
.
- (void)dealloc {
NSLog(@"%@ deallocing", self);
[_contents removeAllObjects];
}
如果我要注释掉这一行[_contents removeAllObjects]
,仪器会显示数组中包含的对象在父对象被释放后仍然存在。我认为当NSArray
释放它时,它会自动减少其中包含的元素的保留计数。那么为什么需要显式删除呢?这种行为是调试本身的副作用吗?