其大家都很熟悉的常见问题,但我还是不完全理解。父母子女建设保留周期
如果对象A拥有(具有强属性)对象B,而对象B具有对象A的强属性,则存在保留周期,并且不会释放对象并存在内存泄漏。
但是,如果对象A改为指向对象C而不是对象B,那么内存中的另一个地址呢?
据我所知,强大的性能做类似如下:
- (void)setObject:(id)newObject{
if (_newObject == newObject){
return; //
}
NSObject *oldObject = _newObject;
_newObject = [newObject retain];
[oldObject release];
}
那么,如果我们点而不是为对象C,是不是在这种情况下内存对象B将被释放?如果两个对象(A和B)将相反设置nil
对象,该怎么办?内存泄漏是否还会有保留周期?在旧的价值“浮动”在内存的某个地方?
我知道,这已经讨论过很多次了,但我仍然无法在我的脑海中看到“全貌”。我很感谢在这方面的任何澄清。
分配工具有助于辅助周期检测的工具。我建议你探索一下这些工具。如果你想编写示例代码来玩,创建你自己的NSObject子类,这样你就不会遇到静态实例(比如@“foo”)或标签指针。 – bbum