我有一个自定义的 UIViewController 子类,它自己处理所有 View 初始化(它不使用 nib)。还有另一个从 nib 加载的 UIViewController 子类。两者都包含在 UITabBarController 中。 当出现内存警告时,第一个 Controller 确实会收到通知,但 viewDidUnload 不会被调用。第二个 Controller 也收到通知,并且它的 viewDidUnload 确实被调用。 我检查了 didReceiveMemoryWarning,self.isViewLoaded 为 TRUE,self.view.superview 为 null。 通知出现时,两个 Controller (其选项卡)都是不可见的。
自定义 View Controller 是否应该做一些特殊的事情才能在内存警告的结果中卸载?
最佳答案
如果您要子类化 UIViewContoller
并且不从 NIB 初始化它,则需要子类化 -loadView
方法。否则,iOS 假定 View 无法卸载/重新加载。
只需将以下内容添加到您的实现中就足够了:
- (void)loadView {
[super loadView];
}
我会尝试找到相关的文档引用。
The documentation is unfortunately not very clear on this matter.
关于ios - 自定义 UIViewController viewDidUnload 永远不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10012845/