我想知道到目前为止您在什么情况下使用了-retainCount
,最终想知道使用它时可能发生的问题。
谢谢。
最佳答案
您永远不要使用-retainCount
,因为它永远不会告诉您任何有用的信息。 Foundation和AppKit/UIKit框架的实现是不透明的。您不知道要保留的内容,为什么要保留它,谁要保留它,何时保留它,等等。
例如:
[NSNumber numberWithInt:1]
的retainCount
为1。事实并非如此。是2. @"Foo"
的retainCount
为1。事实并非如此。是1152921504606846975。[NSString stringWithString:@"Foo"]
的retainCount
为1。事实并非如此。同样,它是1152921504606846975。基本上,由于任何事物都可以保留对象(并因此更改其
retainCount
),并且由于您没有运行应用程序的大多数代码的源代码,因此对象的retainCount
是没有意义的。如果您要查找为什么未释放对象的原因,请使用仪器中的“泄漏”工具。如果您试图找出为什么对象被过早释放的原因,请使用Instruments中的“僵尸”工具。
但不要使用
-retainCount
。这是一种毫无值(value)的方法。编辑
请大家转到http://bugreport.apple.com并要求弃用
-retainCount
。要求的人越多越好。编辑#2
作为更新,现在
[NSNumber numberWithInt:1]
的retainCount
为9223372036854775807。如果您的代码原本希望它是2,则您的代码现已损坏。关于objective-c - 何时使用-retainCount?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4636146/