0
我的iPad应用程序中的根级视图控制器是一个UISplitViewController。因此,它有2个视图控制器:为什么我的一些视图控制器没有收到didReceiveMemoryWarning?
- 一个主视图控制器(在viewControllers属性的项0)
- 一个详细视图控制器(在viewControllers属性的第1项)
详细视图控制器是一个自定义视图控制器,根据我的主视图控制器中的点击和事件进行更改。
为了改变这种细节视图控制器,我使用以下代码:
- (void)replaceSecondViewControllerBy:(UIViewController *)viewController {
[[self.viewControllers objectAtIndex:1] dismissModalViewControllerAnimated:NO];
NSArray *newVC = [NSArray arrayWithObjects:[self.viewControllers objectAtIndex:0], viewController, nil];
self.viewControllers = newVC;
}
我的问题是,当我的应用程序接收到一个存储器警告事件,则didReceiveMemoryWarning
方法被称为我的所有视图控制器,除用于以前的详细视图控制器的。而且它们还没有被释放,因为它们仍然是其他对象的委托(包括可能仍在运行的异步方法)。
我的问题是:
- 什么是一个UIViewController接收
didReceiveMemoryWarning
消息的规则?为什么我以前的细节视图控制器不能接收它们? - 我可以在这些旧的视图控制器上安全地拨打
didReceiveMemoryWarning
或viewDidUnload
我自己吗?