仪器报告了NSDate变量泄漏的情况。但是如果我添加保留和释放,应该可以通过自动释放池来释放它。可能我计算得不对,但我想确保一下。看一下RefCt。 如果我使用[Class alloc],它应该具有1个保留计数,然后如果我将该对象自动释放,它应该能够释放,还是不行?
仪器为您累加保留和释放。这就是“RefCt”列向您展示的内容:运行总数。如果我 [Class alloc],它应该显示一个保留计数为1的对象,确实如此;那是列表中的第一行。然后,如果我将对象设置为自动释放,它应该能够自由释放吗,还是不行?自动释放并不是立即-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。该对象需要另一个释放才能被释放。在发生这种情况之前,不会被释放。是的,当一个对象有足够的未完成自动释放时,在它们到期之前被保留并因此保持活动状态是可能的。我曾经看到过这种情况发生在一个我保留不足的对象上,但那是一个绑定使用的属性值;绑定保留了该值,因此即使我自动释放了我自己对其的最后所有权,它仍然保持活动状态。