2011-07-30 2 views
0

現在、私はナビゲーションコントローラに私のビューを追加するには、以下のコードがあります。最初の行でautoreleaseを使用し、3行目のリリースを削除した場合、pushViewControllerメソッドによって保持される前に、ビューの割り当てが解除される危険がありますか?私はこれを行うとすぐに私のビューが解放されます

WeaponStoreView *weaponStoreView = [[WeaponStoreView alloc] initWithNibName:@"WeaponStoreView" bundle:nil]; 

    // ... 
    // Pass the selected object to the new view controller. 
    [self.navigationController pushViewController:weaponStoreView animated:YES]; 
    [weaponStoreView release]; 
+0

これを含むほとんどの状況では、自動リリースよりもリリースを使用する方が良いです。 –

+0

なぜそれは良いでしょうか?オブジェクトが長期間保持されていないことを保証するので、リリースをより良くすることはないでしょうか? – Mel

+0

これは私が言ったことですが、[/ over] autoreleaseよりもリリースを使うほうがいいです、あなたの理由は正しいです。 –

答えて

1

いいえ、weaponStoreViewはpushViewControllerによって保持されるべきです:それを受け取るとすぐに、注意する必要があるスレッドを扱う際にいくつかの複雑な問題がありますが、この状況ではありません。技術的には、weaponStoreViewはリリースプールがフラッシュされるまで必要なくなったらすぐにリリースすることができますが、この場合はnavigationControllerがあなたの上にぶら下がりますweaponStoreは、現在のイベントループが終了した後に長く続きます。

1

自動解除機能は、現在の機能が終了するまでオブジェクトを解放しないため、正常に動作するはずです。

関連する問題