iphone - 我什么时候应该在 -(void)viewDidUnload 而不是 -deallo

-(void)viewDidUnload 有什么用处?

我不能只释放 -dealloc 中的所有内容吗?如果 View 确实卸载了,难道不会调用 -dealloc 吗?

最佳答案

除了已经说明的内容,我想详细说明-viewDidUnload 背后的逻辑。

实现它的最重要原因之一是 UIViewController 子类通常还包含对 View 层次结构中各种 subview 的拥有引用。例如,这些属性可以在从 nib 加载时通过 IBOutlets 设置,或者在 -loadView 内以编程方式设置。

UIViewController 对 subview 的附加所有权意味着即使将其 View 从 View 层次结构中移除并释放以节省内存,通过这 subview 也被 View 释放,它们不会实际上被释放是因为 UIViewController 本身仍然包含对这些对象的未完成保留引用。释放这些对象的 UIViewController 额外所有权可确保它们也将被释放以释放内存。

您在此处发布的对象通常会在 UIViewController View 被 重新加载 时重新创建并重新设置,无论是从 Nib 还是通过 的实现-loadView.

另请注意,在调用此方法时,UIViewController view 属性为 nil

关于iphone - 我什么时候应该在 -(void)viewDidUnload 而不是 -dealloc 中释放对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1158788/

相关文章:

objective-c - iOS - 如何以编程方式设置 UISwitch

ios - "From View Controller"使用 UIViewControllerCon

ios - 在单行 UILabel 旁边居中 NSTextAttachment 图像

iphone - Xcode 4.5 Storyboard 'Exit'

iphone - Objective-C/Cocoa Touch 中的 HTML 字符解码

ios - 检查 AVPlayer 的播放状态

iphone - 关闭呈现的 View Controller

objective-c - 如何获取 NSString 的前三个字符?

ios - 错误 : CUICatalog: Invalid asset name supplied

objective-c - 声明的属性是否需要相应的实例变量?