objective-c - 拆除 UIViewController 时是否总是调用 viewDidUnload 和 dealloc?

标签 objective-c ios cocoa-touch memory-management uiviewcontroller

我想知道 viewDidUnloaddealloc 是否总是在 UIViewController 拆卸过程中连续调用。是否可以在我的 View Controller 上调用 dealloc 而无需先调用 viewDidUnload

在任何一种情况下,如果我在这两种方法中安全地释放属性和保留引用,那么如果这两种方法都被调用就不会有问题——但我想知道是否有人确定或可以阐明拆卸过程。

2012 更新:值得注意的是,好像 iOS 6 viewDidUnload 已被弃用,应该用手动 View 拆卸代替如果需要didReceiveMemoryWarning 中。

一篇关于新 UIView/UIViewContoller 和新行为及其对 joe conway blog 的影响的好文章

最佳答案

viewDidUnload 不会dealloc方法一样每次都被调用。 viewDidUnload 仅在您的应用收到低内存警告时调用!

试想一下,如果您同时在 viewDidUnloaddealloc 方法中释放您的对象。如果每次都调用两者,那么您正在释放已经释放的对象,这将导致应用程序崩溃,不是吗? viewDidUnload 是 Apple 提供的一个地方,用于在收到低内存警告时清理东西,因为你知道在 iPhone 中我们有内存限制。

关于objective-c - 拆除 UIViewController 时是否总是调用 viewDidUnload 和 dealloc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1768076/

相关文章:

iphone - 我如何判断 UITableView 是否包含特定的 NSIndexPath?

ios - 在进行 interactivePopGestureRecognizer 转换时禁用滚动

iphone - 如何在应用更新下载后再次调用 didFinishLaunchingWithOptions

ios - 单击 gmsmarker 时不会弹出信息窗口

objective-c - 在 tableView 中获取 TextField 标识

c++ - 捕获我在 Objective-C 中调用的 C++ 函数的异常?

ios - Apple 会离线测试 iOS 应用程序吗?如果没有连接,如何处理错误?

iphone - NSURLRequest 设置 HTTP header

ios - 按顺序显示编辑的NSString

iphone - AlertView 的 init 方法中的参数