アプリデリゲートを使用して、ViewController間を移行しています。サーバーからのメッセージに基づいて、デリゲートがView Controllerが不要になったと判断した場合、現在のビューを削除して別のビューに置き換える必要があります。現在、私のコードは次のようになっています。
- (void) showFight: (NSNotification*) notification
{
if(self.window.rootViewController != self.fightViewController)
{
NSDictionary* dict = [notification userInfo];
FightViewController *fightView = [[FightViewController alloc]
initWithNibName:@"FightViewController" bundle:nil];
fightView.userId = _userId;
self.fightViewController = fightView;
[fightView release];
[self.radarViewController.view removeFromSuperview]; // Doesn't work.
self.window.rootViewController = self.fightViewController;
[self.fightViewController showMonster:dict];
}
}
ビューコントローラーからサウンドエフェクトがバックグラウンドで聞こえるので、ビューコントローラーが削除されていないことはわかっています。
いつでも1つのViewControllerのみをメモリに入れたいので、ViewControllerを完全に破棄したいと思います。上記のコードに示すように、毎回最初からViewControllerを作成する予定です。私はこれを不適切に行っていますか?