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");
}
我遇到了一个视图控制器的问题,该视图控制器被关闭且未被引用但仍在内存中,只是想知道一般来说,当没有人引用它时对象实际上何时在内存中释放?
我用来测试的方法是,我从 Facebook 安装了 PVC 工具,并在显示视图控制器时使用它打印出视图层次结构,在它被关闭后,我确保没有人引用它并暂停执行,所以我可以 po
来自以前的 PVC 工具的视图控制器的内存地址,但我仍然可以在那里看到视图控制器实例。
谢谢!
你似乎对释放和清除记忆感到困惑。当class被销毁时,它占用的内存并没有清零,就像你在文件系统中删除一个文件时,磁盘块也没有清零。
这只会占用太多时间并且收效甚微。
释放只是意味着 class 占用的内存现在可以重新使用。
查看class是否被销毁的一种方法是在dealloc
方法中添加日志:
- (void)dealloc
{
NSLog(@"I'm being destroyed");
}