ObjC:当没有人引用它时,对象是否立即释放?

ObjC: is an object released IMMEDIATELY when no one references it?

我遇到了一个视图控制器的问题,该视图控制器被关闭且未被引用但仍在内存中,只是想知道一般来说,当没有人引用它时对象实际上何时在内存中释放?

我用来测试的方法是,我从 Facebook 安装了 PVC 工具,并在显示视图控制器时使用它打印出视图层次结构,在它被关闭后,我确保没有人引用它并暂停执行,所以我可以 po 来自以前的 PVC 工具的视图控制器的内存地址,但我仍然可以在那里看到视图控制器实例。

谢谢!

你似乎对释放清除记忆感到困惑。当class被销毁时,它占用的内存并没有清零,就像你在文件系统中删除一个文件时,磁盘块也没有清零。

这只会占用太多时间并且收效甚微。

释放只是意味着 class 占用的内存现在可以重新使用。

查看class是否被销毁的一种方法是在dealloc方法中添加日志:

- (void)dealloc
{
    NSLog(@"I'm being destroyed");
}