2009-04-28 11 views
2

DOCは言う: 必要に応じてプール にドレインメッセージを送信するガベージコレクション環境でiPhone OSの自動解放プールをI-drainまたは-releaseする必要がありますか?

、 は、ガベージコレクションをトリガーします。ただし、リリースは ノーオペレーションです。リファレンスカウントの 環境では、ドレインはリリースと同じ効果を持ちます( )。したがって、通常は、 はリリースの代わりにドレインを使用する必要があります。

私はいつも-drainを使うべきだと言っていますが、ガベージコレクションや参照カウントがあれば問題ありません。 iPhoneにはGCがないので、とにかく私はDrainを送信しますか?

残念ながら、このドキュメントでは、Cocoa TouchやiPhoneではなく、Cocoaについてしか話しませんでした。だから、同じことがそこに当てはまるかどうかは分かりません。

+0

医者に相談してください^ _^ –

答えて

7

実際には関係ありませんが、どちらも同じ効果があります。 Appleはガベージコレクション環境(iPhone SDKの将来のバージョンでサポートされている場合、またはMac OS Xプロジェクトにコピーする場合)に移動した場合に備えて、排水処理を使用することをお勧めします。

3

ちょうど-drainを送信します。後日iPhoneにGCがあれば、それをそのままコンパイルすることができます。それは良い習慣です。

+0

ありがとうございます。 Appleがmain()関数(main.m)のARPにリリースを送信したので、ちょっと疑問に思いました。 – Thanks

-3

通常の開発では、自動解放プールでドレインを呼び出す必要はありません。これは、メソッドが返ってもそれを実行します。

ただし、オートレリースされた多くのオブジェクトをループ作成していて、それらの一部を以前に解放する機会がある場合は例外です。

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

関連する問題