Objective-C保留dealloc中的计数

Mic*_*all 3 cocoa objective-c

我在这里看到一些相当奇怪的东西,我dealloc在我的应用程序中设置了各种方法的断点,并且在检查时,对象的保留计数self从1到0变化.当dealloc调用时,对象的保留计数是已设为0?

我正在print (int) [self retainCount]控制台中使用它来测试它.

0似乎只出现在deallocNSOperation的运行中NSOperationQueue.

知道为什么会这样吗?

Jen*_*ton 8

你的对象的保留计数无关紧要-dealloc.出于实际目的,它是未定义的.

引用计数的正常实现使用大于零的值的外部引用计数 - 请参阅NSIncrementExtraRefCount()NSDecrementExtraRefCountWasZero().当extraRefCount计数为零时,refCount为1.当NSDecrementExtraRefCountWasZero()调用when并且extraRefCount已经为零时,它将返回YES并被-dealloc调用.除了处理返回值时,NSDecrementExtraRefCountWasZero()无法区分refCount为1和refCount为零.

NSOperation得到它没有使用正常的机制是零引用计数建议.