iOS6 / iOS6 アプリで NIB ファイルと一緒に複数のストーリーボードを混在させています。
複数のストーリーボードでメモリ管理はどのように機能しますか?
- ストーリーボードAを起動したときに、別のnibファイルに戻ったり、別のストーリーボードに移動したりした場合、そのストーリーボードAはメモリ内にそのまま残りますか?
- UIViewControllers を使用してナビゲーション コントローラーのスタック内のビューの配列を取得できる方法で、スタック内のストーリーボードの「配列」を取得できますか?
- メモリ管理のために、ストーリーボードをメモリからポップまたは削除できますか? 別のストーリーボードに移動するときに nil に設定しますか?
複数のストーリーボードを nib ファイルと混合して使用している理由:
- 複雑なストーリー ストーリーボード フローが必要です。それらをすべて一箇所にぶつけても意味がありません。
- 最終的には、さまざまな人々と仕事をすることになり、チームワーク、複数のストーリーボード ルートを選択するのに十分説得力のあるバージョン管理についての議論を見つけることができます。
- ストーリーボードはまだ複雑な nib ファイルや多くのプログラム ビューなどで動作しないため、NIB ファイルを混在させています。
私のコード スニペット
InitialNibFile.m 内 <-- appdelegate から起動されます。
- (IBAction)newStoryboardBtnPressed:(id)sender {
[self.view removeFromSuperview]; // here I remove this view from the superview to save memory
UIStoryboard *newStoryboard = [UIStoryboard storyboardWithName:@"NewStoryboard" bundle:nil];
UIViewController *initialSettingsVC = [newStoryboard instantiateInitialViewController];
[self presentViewController:initialSettingsVC
animated:YES completion:nil];
}
ここでは、ストーリーボード シーン内にある UIViewController ビュー内。
- (IBAction)anotherStoryboardBtnPressed:(id)sender {
// I'm inside a storyboard right now. I'm calling another storyboard.
// can i remove this storyboard before i launch the otherone? will keeping 2 or 3 toryboards in memory cause a memory leak?
UIStoryboard *settingsStoryboard = [UIStoryboard storyboardWithName:@"AnotherStoryboard" bundle:nil];
UIViewController *initialSettingsVC = [settingsStoryboard instantiateInitialViewController];
// i'm going to load this view controller modally
// initialSettingsVC.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
[self presentViewController:initialSettingsVC
animated:YES
completion:nil];
}