2011-12-28 4 views

答えて

5

リリースしたばかりのオブジェクトを再利用しようとしないようにするためです。

nilに設定することで、問題を引き起こすのではなく、将来のメッセージが確実に捨てられるようになります(標準のnilオブジェクトの動作)。

+1

sidenoteでは、通常、 'dealloc'メソッドでivarをnilに設定する必要はありません。人がスーパークラスのイヴァールとハックリしない限り。 – JustSid

2

これは安全な方法であるからです。

deallocでは、スレッドを使用していない限り実際にはあまり意味がありませんが、そうでない場合は、オブジェクトにnilを割り当てるたびに(プロパティでない限り)常にそれを行うのが良い方法です。

1

私が理解しているように、deallocでは必要ありません。ただし、他の方法でオブジェクトを解放すると、ポインタは残っていますが、ポインタが指すオブジェクトはもはや存在せず、メッセージを送信するときにクラッシュが発生します。

ポインタをnilに設定すると、アプリケーションにクラッシュする(または奇妙な動作を引き起こす)代わりに、送信されたすべてのメッセージが無視されることが確実になります。

関連する問題