ios - 自定义 UIViewController viewDidUnload 永远不会被调用

标签 ios cocoa uiviewcontroller

我有一个自定义的 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/

相关文章:

ios - 扩展项目模板未出现在 Xcode 6 中

ios - Firebase Cloud Messaging 推送通知不再出现在 iOS 上

objective-c - 由于 addObject 不访问 setter,如何检查分配?

ios - 如何在 ios swift 中以编程方式将 Storyboard View Controller 加载到标签栏 Controller 中?

iphone - 为什么不调用 viewWillDisappear 或 viewDidAppear?

ios - iOS 中 "isOpaque"和 "isTranslucent"有什么区别?

ios - 声明 NSDictionary 并将其放入 Swift 中的键值对?

objective-c - OSX 状态栏图像大小调整 - Cocoa

cocoa - 接受 Dock 图标上的卷滴

objective-c - performSegueWithIdentifier 的调用顺序