dealloc 和 viewdidunload 有什么区别?
我什么时候应该释放我在程序中分配的所有内存?
因为我只有一个 viewDidLoad 方法来处理我的业务。我应该将 dealloc 留空并仅在 viewDidUnload 中进行清理吗?
When should I release all the memory I allocated in my program?
Because I only have a viewDidLoad method where I do my business. Should I leave dealloc empty and cleanup only in viewDidUnload?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当对象准备好被释放时(即,当对象的保留计数变为0时),使用“dealloc”。 viewDidUnload 在视图卸载时被调用,但它可能不会立即释放,因为 UIViewController 的引用仍然由一些其他对象存储。
我个人的偏好是,对于“init”创建的对象,它们由“dealloc”释放,对于“viewDidLoad”创建的对象,它们由“viewDidUnload”释放。
'dealloc' is used when the object is ready to be freed (i.e., when retain count of the object becomes 0). And viewDidUnload is called when the view is unloaded, but it may not be freed immediately as the reference of the UIViewController is still stored by some other objects.
my personal preference is, for ojbects created by 'init', they are freed by 'dealloc', for objects created by 'viewDidLoad', they are freed by 'viewDidUnload'.
正如
-viewDidUnload
的文档所述:没有提到
-viewDidUnload
将在-dealloc
中调用,您不应该依赖它。As the documentation of
-viewDidUnload
says:There is no mention
-viewDidUnload
will call in-dealloc
, you shouldn't rely on it.