gpt4 book ai didi

iphone - viewdidunload 根本没有被调用

转载 作者:行者123 更新时间:2023-12-03 18:38:15 25 4
gpt4 key购买 nike

我的问题是这样的:

  1. 父类加载 subview 。
  2. 子级在执行操作期间使用“removeFromSuperView”删除自身。
  3. 当子类被移除时,父类会获得委托(delegate)调用,从而使子对象为零。

子类的viewdidunload仍然没有被调用!

最佳答案

正如其他人提到的,viewDidUnload 是 UIViewController 的一种方法。不保证会被调用。仅当应用程序释放 Controller View 以释放内存时,它才会在内存不足的情况下被调用。这使您有机会释放您可能保留为 Controller 属性的任何 View 的 subview 。

如果您在 View Controller 的 View 上调用removeFromSuperview,那么您可能在它不适合处理的上下文中使用UIViewController。 View Controller 旨在管理全屏 View 。这些 View 预计只会在 iPhone 上的少数环境中呈现:

  1. 作为窗口 Root View Controller 的全屏 View
  2. 作为 UINavigationController 管理的屏幕层次结构中的全屏 View
  3. 作为选项卡中呈现的全屏 View
  4. 作为使用presentModalViewController:animated呈现的全屏 View :

只要您在这些上下文(以及 iPad 上的其他几个上下文)中使用 View Controller ,那么您就可以通过 loadView、viewDidLoad、viewWillAppear:animated:、viewDidAppear:animated 可靠地管理 View 的生命周期:、viewWillDisappear:animated:、viewDidDisappear:animated: 和 viewDidUnload 方法(再次记住,viewDidUnload 并不总是被调用)。

通常,您应该将 View Controller 的 View 传递给 addSubview: 的唯一时间是当您将 Root View Controller 的 View 添加到窗口时。如果您想尝试使用嵌套 View Controller 来管理非全屏 subview ,则必须在适当的时间从全屏 View Controller 手动调用其 viewWill/DidAppear/Disappear:animated: 和 viewDidUnload 方法。

关于iphone - viewdidunload 根本没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5594410/

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