gpt4 book ai didi

ios - 在 iPad DetailView 情况下,viewDidUnload 未被调用

转载 作者:行者123 更新时间:2023-11-29 05:00:53 28 4
gpt4 key购买 nike

我设置了一个详细 View ,我是否有几个 Nib 文件根据在 Root View Controller 的表中选择的项目来加载。

我发现,对于 Nibs 的类,永远不会调用 viewDidUnload,而 viewWillDisappear 会被调用,当然还会调用 dealloc。

有人知道这是为什么吗?

谢谢。

最佳答案

我相信当 View 从 View 中消失时通常不会调用viewDidUnload。这样做的原因是因为 dealloc 通常会处理所有内存转储,因此不需要先调用 viewDidUnload

我认为一个示例将有助于识别何时调用 viewDidUnload。假设您有一个 UINavigationController 并且您已经推送了一个新 View 。这个新 View 对内存使用量非常大,因此该应用程序尝试支持一些资源。它通过查看是否加载了当前不在屏幕上的任何 View 来实现此目的。如果是这样,它会调用 viewDidUnload ,理想情况下您可以删除在 loadView 或 viewDidLoad 中构建的内容。然后,当您返回到该 View 时,它会再次调用 loadView 或 viewDidLoad 来重新构建在 viewDidUnload 中转储的内容。

但是,如果它不需要释放内存来显示详细 View ,则在正常处理过程中不会调用它。这就是为什么 viewWillDisappear 被调用(以及 dealloc),但从未调用 viewDidUnload

来自苹果的文档:

When a low-memory warning occurs, the UIViewController class purges its views if it knows it can reload or recreate them again later. If this happens, it also calls the viewDidUnload method to give your code a chance to relinquish ownership of any objects that are associated with your view hierarchy, including objects loaded with the nib file, objects created in your viewDidLoad method, and objects created lazily at runtime and added to the view hierarchy. Typically, if your view controller contains outlets (properties or raw variables that contain the IBOutlet keyword), you should use the viewDidUnload method to relinquish ownership of those outlets or any other view-related data that you no longer need.

UIViewController Class Reference

关于ios - 在 iPad DetailView 情况下,viewDidUnload 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6995602/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com