-(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/