Objective-C保留dealloc中的计数

Objective-C保留dealloc中的计数,第1张

概述我在这里看到一些相当奇怪的东西,我在我的应用程序中设置了各种dealloc方法的断点,并且在检查时,对象self的保留计数从1到0变化.当调用dealloc时,将保留计数对象是否已设置为0? 我在控制台中使用print(int)[self retainCount]来测试它. 0似乎只出现在我的NSOperation的dealloc中,它们正在NSOperationQueue中运行. 知道为什么会这 我在这里看到一些相当奇怪的东西,我在我的应用程序中设置了各种dealloc方法的断点,并且在检查时,对象self的保留计数从1到0变化.当调用dealloc时,将保留计数对象是否已设置为0?

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

0似乎只出现在我的NSOperation的dealloc中,它们正在NSOperationQueue中运行.

知道为什么会这样吗?

解决方法 在-dealloc中,对象的保留计数无关紧要.出于实际目的,它是未定义的.

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

NSOperation获得零refCount表明它没有使用正常机制.

总结

以上是内存溢出为你收集整理的Objective-C保留dealloc中的计数全部内容,希望文章能够帮你解决Objective-C保留dealloc中的计数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1070010.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存