私のiPadアプリケーションのルートレベルのビューコントローラーはUISplitViewControllerです。したがって、2つのビューコントローラがあります。
- 1つのマスタービューコントローラー(viewControllersプロパティの項目0)
- 1つの詳細ビューコントローラー(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