2

iPhone開発初心者です。

アプリでいくつかのボタンとラベルを使用しています。これらすべてのボタンとラベルを dealloc 関数で解放しています。
また、viewDidUnload でそれらを解放しています。

- (void)viewDidUnload
{
[super viewDidUnload];
self.ans1 = nil;
self.ans2 = nil;
self.ans3 = nil;
self.ans4 = nil;
self.button = nil;
self.button2 = nil;
self.button3 = nil;
self.button4 = nil;
}

メモリ管理に適しているか、メモリ管理に違いがないかを知りたいだけです。
そして、なぜそれを使用するのですか??

前もって感謝します..!!

4

3 に答える 3

3

viewDidUnload が呼び出されたときにアンロードされるのはビュー コントローラーではなく、そのビューのみです。View Controller は、割り当てが解除されるまで存続します。

viewDidUnload では、ビューの一部であるオブジェクトと、viewDidLoad で再作成できるすべてのものを解放する必要があります (ビュー コントローラーがそのビューを再作成する必要がある場合、viewDidLoad が再度呼び出されるため)。これには、すべてのアウトレットが含まれます。また、これらの変数を過度に解放しないように、これらの変数を nil に設定する必要があります。

dealloc では、viewDidUnload に含めたものを含め、View Controller が保持するすべてのオブジェクトを解放する必要があるためです。

于 2011-08-17T08:54:32.067 に答える
2

viewDidUnload は、ビューの作成時に作成した可能性のあるものをすべて解放するために使用されます。これには、viewDidLoad に含まれるものだけでなく、xib ファイル内から作成される IBOutlet プロパティも含まれます。これらはすべて解放し、viewDidUnload で nil に設定する必要があります。

それ以外はすべて、dealloc で解放する必要があります。

アイデアは、viewDidUnload が呼び出されてメモリが解放された場合、viewDidLoad メソッドからビューを完全に再作成できるということです。

この質問も参照してください。

viewDidUnload を使用した iPhone でのメモリ管理

于 2011-08-17T08:58:29.737 に答える
1

メモリ管理に適しています。コントローラのアンロード時にViewコントローラに関連付けられているオブジェクトを解放すると、アプリケーションのメモリフットプリントを効果的に削減できます。オブジェクトを使用していないときでもオブジェクトを保持すると、アプリケーションでメモリの警告が発生しやすくなり、最終的には終了しやすくなります。

したがって、で割り当ててViewDidLoadリリースすることをお勧めしViewDidUnloadます。

HTH、

Akshay

于 2011-08-17T08:50:32.660 に答える