2009-07-18 9 views
0

彼らは言う:私はIBOutletsを - (void)viewDidUnloadでリリースする必要がありますか?

//は メインビューのいずれかを保持サブビューを解放します。 // self.myOutlet = nil;

以前は見たことがありません。彼らはここでペン先について話しているのだろうか?

+0

類似していない場合は、質問:http://stackoverflow.com/questions/382576/do-i-need-to-release-iboutlets-when-using-loadnibnamed-method – titaniumdecoy

答えて

1

周囲を守るべき理由がある必要はありませんが、ビューが分解された場合はコンセント経由でエンティティポイントにアクセスする必要があると仮定すると、解放する必要があります。それ以外の場合は、nib自体がアンロードされているにもかかわらず、ビューコントローラがyoourペン先からのすべてのIBOutletsに対してアサートをアサートして、アロケートされないようにします。これらのオブジェクトにはテクスチャやバッキングが含まれている可能性があります。iPhoneは非常に多くの無駄なメモリを非常に迅速に追加できるビデオ用のメインRAMを使用しています。

さらに、viewDidLoadが再度呼び出されると、nibがリロードされたときに新しいオブジェクトが作成され、そのコンセントに割り当てられるため、他の場所で使用すると、他のオブジェクトのプロパティをIBOutlet)あなたのアプリは一貫性のない状態になるかもしれません。

2

initに割り当てられるものは、deallocに割り当てられていないものと同じです。

メモリをviewDidLoadに割り当てる場合は、viewDidUnloadで解放する必要があります。

写真にnibファイルを持ってくると、問題が混乱します。 nibファイルを手動でロードする場合は、手動でロードしてIBOutletsをすべてゼロに設定する必要があります。

関連する問題