我想了解您迄今为止使用
谢谢。
-retainCount
的情况,以及在使用它时可能发生的问题。谢谢。
-retainCount
的情况,以及在使用它时可能发生的问题。-retainCount
,因为它永远不会告诉你任何有用的信息。Foundation和AppKit/UIKit框架的实现是不透明的,你不知道什么被保留、为什么被保留、谁在保留它、何时被保留等等。[NSNumber numberWithInt:1]
的retainCount
值应为1,但实际上却是2。
- 你可能认为@"Foo"
的retainCount
值应为1,但实际上却是1152921504606846975。
- 你可能认为[NSString stringWithString:@"Foo"]
的retainCount
值应为1,但实际上却同样是1152921504606846975。retainCount
值),而且由于大多数运行应用程序的代码并不是你编写的,所以对象的retainCount
值是毫无意义的。-retainCount
,它是一个完全没有用的方法。-retainCount
弃用。请求越多,效果越好。[NSNumber numberWithInt:1]
现在的retainCount
值为9223372036854775807。如果你的代码期望这个值为2,则你的代码现已失效。- (NSUInteger)retainCount{return NSUIntegerMax;}
。 - JoeretainCount
方法。 - Dave DeLongdealloc
方法仍然可以使用,只是用于清理而不是内存管理。在我需要做这个的罕见情况下,我倾向于断点而不是日志记录。 - lxt-retainCount
更详细的信息。请注意,这里不包括解释和其他非翻译内容。 - Dave DeLongretain
、retain
、retain
、autorelease
、autorelease
、autorelease
可能是完全有效的结果。 - bbum自动释放对象是一个情况,在这种情况下,检查 -retainCount 是没有信息的,可能会引起误导。保留计数不告诉你关于一个对象被调用了多少次 -autorelease 的信息,因此也不知道当当前自动释放池清空时它将被释放多少次。
我发现使用"Instruments"检查retainCounts非常有用。
在使用"allocations"工具时,确保打开了"Record reference counts"选项,您可以进入任何对象并查看其retainCount历史记录。
通过配对allocs和releases,您可以很好地了解情况,并经常解决那些无法释放的困难情况。
这从未让我失望 - 包括在iOS早期测试版中发现错误。
使用它会有什么问题?它只返回对象的保留计数。我从未调用过它,也想不到任何理由去调用它。但是在单例中,我已经重写了它,以确保它们不会被释放。
retainCount
进行内存管理的代码路径。 - bbum在你的应用程序启动并执行一些有用的操作之前,不必担心内存泄漏。
一旦应用程序启动后,启动Instruments并使用应用程序,查看是否真的存在内存泄漏。在大多数情况下,您自己创建了一个对象(因此您拥有它),但在完成后忘记释放它。
在编写代码时不要尝试进行优化,当您正常使用应用程序时,您对可能会泄漏内存或需要太长时间的猜测通常是错误的。
请尝试编写正确的代码,例如,如果您使用alloc等创建对象,则确保正确释放它。
在你的代码中永远不要使用-retainCount。然而,如果你使用了它,你永远不会看到它返回零。想一想为什么。:-)
-retainCount
。 - holex