gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 16:10:55 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com