私のアプリケーションはビューベースで開始しましたが、後でナビゲーション ベースに変更する必要がありました。私がこれを行った方法は、私の中で UINavigationController メンバーを作成し、メソッドAppDelegate
を呼び出すことでした:pushViewController
didFinishLaunchingWithOptions
@property (nonatomic, retain) IBOutlet UINavigationController *navigator;
// didFinishLaunchingWithOptions implementation
MainController *mainView = [[MainController alloc] initWithNibName:@"MainController" bundle:nil];
navigator = [[UINavigationController alloc]init];
[navigator pushViewController:newSongView animated:YES];
[mainView release];
私MainController view
には、このメソッドを呼び出してユーザーを次のビューに送るボタンがあります。
- (IBAction)newViewLoader:(id)sender {
SecondViewController *secVC = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self.navigationController pushViewController:secVC animated:YES];
}
これは正常に動作しますが、このボタンが押された瞬間、シミュレーターは 5MB の追加メモリを使用し始めます。そしてback
、ナビゲーションバーのボタンを押してから、newViewLoader
メソッドを呼び出すボタンを押すと、シミュレーターによってさらに 5MB が使用されます。など、2 番目のビューが読み込まれるたびに。したがって、このビューをロードするのは非常にコストがかかります。
ビューが開かれるたびにメモリが増加し続けないように、戻るボタンが押されたときにビューをアンロードする方法はありませんか? ビューが読み込まれるたびに何が起こるかを示すスクリーンショットを次に示します。