dealloc和viewdidunload有什么区别?

use*_*957 5 cocoa-touch viewdidload ios4 xcode4

我什么时候应该释放我在程序中分配的所有内存?

因为我只有一个viewDidLoad方法,我在那里开展业务.我应该只在viewDidUnload中将dealloc留空并清理吗?

Wal*_*ung 8

当对象准备好被释放时(即,当对象的保留计数变为0时),使用'dealloc'.并且在卸载视图时会调用viewDidUnload,但它可能不会立即释放,因为UIViewController的引用仍然由其他一些对象存储.

我个人的偏好是,对于'init'创建的ojbects,它们被'dealloc'释放,对于'viewDidLoad'创建的对象,它们被'viewDidUnload'释放.

  • 不是"偏好",而是必需品.请记住,`-viewDidLoad`可能会被多次调用,但它们之间总会有一个`-viewDidUnload`调用.但是,您在`-viewDidLoad`中创建的内容也应该在`-dealloc`中清除,因为在取消分配控制器之前可能不会调用`-viewDidUnload`. (2认同)