ARC中的iOS非零引用计数并不能dealloc

时间:2014-08-29 13:23:35

标签: ios objective-c automatic-ref-counting dealloc

ARC view in instrument

大家好

我试图在ARC模式下取消分配ViewController。 但是,RefCount始终为非零。

我试图将所有对象设置为nil,并将所有子视图设置为removeFromSuperview + nil; 和计时器无效+ nil; 仍然是柜台= 2;

有没有办法追踪哪个指针仍处于保留状态?

由于

2 个答案:

答案 0 :(得分:2)

如果您正在使用块,您可能还会在那里创建保留周期。例如。一个块由一个对象引用,在这个块中你引用对象或调用对象的实例方法。 保留计数不会降至0的另一个选项是您已经注册为观察者,通知。

您可能会发现此答案有用: https://stackoverflow.com/a/12286739/2261423

来自apple docs的强参考周期示例:

self.block = ^{
        [self doSomething];    // capturing a strong reference to self
                               // creates a strong reference cycle
    };

答案 1 :(得分:-1)

@Billy,你为什么要这样做?使用ARC时,您可能不担心重新分配。当控制器没有 参考时,控制器将自动解除分配。是的,视图不是指控制器,它们是由它引用的!因此,删除该视图不会影响控制器的保留计数。如果您确实要从内存中删除View Controller,请将其从父视图控制器中删除,并将所有链接设置为nill。