【发布时间】:2014-10-23 12:30:35
【问题描述】:
大家好
我正在尝试在 ARC 模式下释放 ViewController。 但是,RefCount 始终非零。
我尝试将所有对象设置为 nil,并将所有子视图设置为 removeFromSuperview + nil; 和定时器无效+ nil; 仍然是计数器 = 2;
有没有办法跟踪哪个指针仍在保留中?
谢谢
【问题讨论】:
标签: ios objective-c automatic-ref-counting dealloc
大家好
我正在尝试在 ARC 模式下释放 ViewController。 但是,RefCount 始终非零。
我尝试将所有对象设置为 nil,并将所有子视图设置为 removeFromSuperview + nil; 和定时器无效+ nil; 仍然是计数器 = 2;
有没有办法跟踪哪个指针仍在保留中?
谢谢
【问题讨论】:
标签: ios objective-c automatic-ref-counting dealloc
如果您使用块,您也可以在那里创建保留周期。例如。一个块被一个对象引用,在这个块内你正在引用对象或调用对象的实例方法。 保留计数不降至 0 的另一个选项是您已将 abject 注册为通知观察者。
您可能会发现此答案很有帮助: https://stackoverflow.com/a/12286739/2261423
来自苹果文档的强引用循环示例:
self.block = ^{
[self doSomething]; // capturing a strong reference to self
// creates a strong reference cycle
};
【讨论】:
@Billy,你为什么要这样做?使用 ARC 时,您可能不必担心释放。当控制器没有对的引用时,控制器将被自动释放。是的,视图不引用控制器,它们是由它引用的!因此,删除该视图不会影响控制器的 retain count。如果你真的想从内存中删除视图控制器,请将其从父视图控制器中删除并将所有链接设置为 nill。
【讨论】: