viewdidunload根本没有被调用

Adi*_*hya 7 iphone view ipad

我的问题是这样的:

  1. 父类加载子视图.
  2. Child使用"removeFromSuperView"在操作期间自行删除.
  3. 当子项被删除时,父类会获得委托调用,从而使子对象为零.

仍然没有调用子类的viewdidunload!

cdu*_*uhn 11

正如其他人提到的那样,viewDidUnload是UIViewController的一个方法.它不能保证被调用.当应用程序释放控制器的视图以释放内存时,它仅在低内存情况下被调用.这使您有机会发布您可能保留为控制器属性的任何视图的子视图.

如果你在视图控制器的视图上调用removeFromSuperview,那么你可能在它没有设计用来处理的上下文中使用UIViewController.视图控制器旨在管理全屏视图.预计这些视图将在iPhone上的少数几种情况下呈现:

  1. 作为窗口的根视图控制器的全屏视图
  2. 作为UINavigationController管理的屏幕层次结构中的全屏视图
  3. 作为选项卡中显示的全屏视图
  4. 作为使用presentModalViewController呈现的全屏视图:动画:

只要您在这些上下文中使用视图控制器(以及iPad上的其他几个上下文),您就可以通过loadView,viewDidLoad,viewWillAppear:animated:,viewDidAppear:animated:,viewWillDisappear可靠地管理视图的生命周期. :animated:和viewDidDisappear:animated:和viewDidUnload方法(同样,请记住viewDidUnload不会总是被调用).

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