cocoa-touch - 仪器泄漏、引用计数和自动释放

标签 cocoa-touch cocoa instruments memory-leaks

Instruments 报告我 NSDate 变量泄漏。但是,如果我将保留和释放加起来,我认为应该能够通过自动释放池释放。可能我数错了,但我不想确定。看看 RefCt。 如果我 [Class alloc] 它的保留计数应该为 1,那么如果我自动释放该对象,它应该能够释放,或者不是吗?

enter image description here

最佳答案

Instruments 为您添加保留和释放。这就是“RefCt”列向您显示的内容:运行总计。

If I [Class alloc] it should come up with a retain count of 1, …

确实如此;这是列表中的第一行。

… then if I autorelease that object, it should be able to free, or is it not?

自动释放不是立即-1;它会导致稍后释放,就是 -1。

所以你有:

  1. 分配:+1 (=1)
  2. 自动释放:目前为 0;导致稍后发布(现在没有变化,所以仍然=1)
  3. 保留:+1 (=2)
  4. 发布:-1 (=1)
  5. 保留:+1 (=2)
  6. 保留:+1 (=3)
  7. 发布:-1 (=2)
  8. 发布:-1 (=1)

请注意,三个发布之一是由自动发布引起的。只有这样才会产生-1。

该对象需要再次释放才能被释放。在那之前,它不会发生。

是的,一个具有足够的未完成的自动释放的对象有可能在它们到来之前杀死它,因为在发生之前被保留,从而保持事件状态。我曾经在一个我保留不足的对象上看到过这种情况,但那是绑定(bind)使用的属性的值;绑定(bind)保留了该值,因此即使在我自动释放了它的最后所有权之后,它仍然保持事件状态。

关于cocoa-touch - 仪器泄漏、引用计数和自动释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8190582/

相关文章:

objective-c - 仪器和僵尸;保留计数是 1、2,然后突然 -1!

xcode - 如何以编程方式启动/停止仪器(时间分析器)?

iphone - UI iOS 自动化 : I want to background the app and click the settings panel to put the phone into airplane mode to test the apps offline behaviour

objective-c - 将自身属性传递给 block 时的 ARC 实现

iphone - 禁用 UIWebView 中的可见链接

objective-c - 如何在 cocoa/iOS 中进行 SHA 哈希

iphone - 我正在寻找有关如何检索适用于 MacOS 和 iOS 的电子邮件的 Objective C 示例

cocoa - NSWindow 关闭时如何收到通知

cocoa - 如何自定义 NSTableView 的下拉突出显示?

ios - 如何从NSData将图像保存在iOS设备上?