我在这里看到一些相当奇怪的东西,我dealloc在我的应用程序中设置了各种方法的断点,并且在检查时,对象的保留计数self从1到0变化.当dealloc调用时,对象的保留计数是已设为0?
我正在print (int) [self retainCount]控制台中使用它来测试它.
0似乎只出现在dealloc我NSOperation的运行中NSOperationQueue.
知道为什么会这样吗?
你的对象的保留计数无关紧要-dealloc.出于实际目的,它是未定义的.
引用计数的正常实现使用大于零的值的外部引用计数 - 请参阅NSIncrementExtraRefCount()和NSDecrementExtraRefCountWasZero().当extraRefCount计数为零时,refCount为1.当NSDecrementExtraRefCountWasZero()调用when并且extraRefCount已经为零时,它将返回YES并被-dealloc调用.除了处理返回值时,NSDecrementExtraRefCountWasZero()无法区分refCount为1和refCount为零.
这NSOperation得到它没有使用正常的机制是零引用计数建议.
| 归档时间: |
|
| 查看次数: |
760 次 |
| 最近记录: |