2

ドキュメントは次のように述べています。

ガベージ コレクション環境では、ドレイン メッセージをプールに送信すると、必要に応じてガベージ コレクションがトリガーされます。ただし、リリースはノーオペレーションです。参照カウント環境では、drain は release と同じ効果があります。したがって、通常は release ではなく、drain を使用する必要があります。

私がそれを正しく理解すれば、ガベージ コレクションや参照カウントが存在するかどうかに関係なく、常に -drain を使用する必要があると彼らは言います。iPhone では GC がないので、とにかく -drain? を送信します。

残念ながら、このドキュメントは Cocoa についてのみ言及しており、Cocoa Touch や iPhone については言及していません。したがって、同じことが当てはまるかどうかはわかりません。

4

3 に答える 3

7

それは実際には問題ではありません、それらは両方とも同じ効果を持っています。ガベージコレクション環境に移行する場合(iPhone SDKの将来のバージョンでサポートされている場合、またはMac OS Xプロジェクトにコピーする場合)に備えて、ドレインを使用することをお勧めします。

于 2009-04-28T19:51:57.650 に答える
3

-drainを送信するだけです。後日、iPhoneにGCが搭載されている場合は、変更を加えずにコンパイルできるようになります。入るのは良い習慣です。

于 2009-04-28T19:57:33.457 に答える
-3

通常の開発では、自動解放プールでドレインを呼び出す必要はありません。メソッドが戻ったときに、とにかくそれを行います。

例外は、自動解放される多くのオブジェクトを作成するループにあり、それらの一部を以前に解放する機会がある場合です。

リリースの代わりにドレインを呼び出している場合、自動リリースされていないオブジェクトは解放されません。

于 2009-04-29T15:07:40.057 に答える