2011-10-20 12 views
1

こんにちは、ブロックを使用して、ビューコントローラのスタックへのプッシュを実装しています。私のコードは次の通りです:ブロック内のビューコントローラを解放する場所

私の質問は、メモリ管理のためにどこでfirstViewインスタンスを公開できますか?私は完了ブロック自体にそれを解放しようとしたが、私は、「メモリの問題」を取得します私はこのケースでsplashViewからfirstView

FirstViewController *firstView = [[FirstViewController alloc]init]; 

[firstView setCompletionHandler:^(BOOL isRequestInvite){ 

    splashView=[[AuthSplashController alloc] init]; 
    [splashView setCompletionHandler:onceCompleted]; 

    [navCon pushViewController:splashView animated:YES]; 
    //[firstView release]; 

}]; 

[navCon pushViewController:firstView animated:NO]; 

に戻す]ボタンを押すと、どこ解放する最高の場所でしょうfirstView?

+0

正解:スローARCで何かをリリースしないでください。 –

答えて

4

保持カウントが増加しますので、私は、ナビゲーションスタックにプッシュした後firstViewreleaseあなたができると思う:

[navCon pushViewController:firstView animated:NO]; 
[firstView release]; 
をそれとも、 autoreleasedとしてそのオブジェクトをマークすることができます

FirstViewController *firstView = [[[FirstViewController alloc]init] autorelease]; 
+0

+1コントローラがプッシュされるとnavconが所有権を取得します。オートレアフォームはあまり混乱しない –

+0

ベストプラクティスは何ですか?なぜあなたはいつautorelease対コードで具体的にリリースする必要がありますか?私はいつも明示的にビューを割り当て/プッシュするコードブロックの最後にリリースを行ってきました。 –

+0

私の意見では、 'release'が優れています。 – Nekto

関連する問題