【发布时间】:2011-11-29 22:10:25
【问题描述】:
我的 iPad 应用程序中的根级视图控制器是 UISplitViewController。因此,它有 2 个视图控制器:
- 一个主视图控制器(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吗?
【问题讨论】:
标签: ios memory uisplitviewcontroller didreceivememorywarning