有没有一种快速将对象的保留计数记录到Xcode控制台中的方法? 如果没有,下一个最好的选择是什么?
使用 CFGetRetainCount
函数
示例:
// `CFGetRetainCount` is only available in the `Foundation` module
import Foundation
print(CFGetRetainCount(object))
阅读更多信息:https://developer.apple.com/reference/corefoundation/1521288-cfgetretaincount
希望有所帮助
通常,您可以使用工具来获取保留计数。但是,如此回答的方法是retainCount
。
retainCount
在 Swift 中不好用。另外,查看文档中的“特殊注意事项”: “此方法在调试内存管理问题时没有价值。因为任何数量的框架对象都可能保留了一个对象以便持有对它的引用...” 你会如何在 Instruments 中处理? - sirab333除了使用CFGetRetainCount
,您也可以使用_getRetainCount
。 _getRetainCount
的优点如下:
_getRetainCount
作为Swift标准库的一部分可用,因此您不必依赖于Foundation
。_getRetainCount
是唯一的选择,因为CFGetRetainCount
在那里不可用。_getRetainCount
提供了强引用、弱引用和无主引用计数的总和。如果您只想要强引用计数,可以使用 _getUnownedRetainCount
和 _getWeakRetainCount
进行扣除。print(_getRetainCount(objectName))
retainCount
方法之前,请先阅读以下内容: [10(http://whentouseretaincount.com), [2](https://dev59.com/4G445IYBdhLWcg3w6eXz), [3](http://www.friday.com/bbum/2011/12/18/retaincount-is-useless/), [4](https://dev59.com/rG025IYBdhLWcg3wzpWK),[5 Apple 上对 retainCount 方法的解释](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/#//apple_ref/occ/intfm/NSObject/retainCount) 。 - Midhun MPretainCount
和CFGetRetainCount()
没有任何区别。用盒子和线条画出对象图形是教授关于循环的更好方法;保留计数是无意义的。 - bbum