2011-06-26 3 views
2

私はGCDディスパッチキューを作成して、新しい管理対象オブジェクトの作成と保存を非同期で処理します。GCDのdispatch_queue_t as ivar - メモリ管理?

まず、これをインスタンス変数として作成する必要がありますか?私が(仮定的な)方法-newObjectWithProperties:を持っていて、ローカルでラベル"com.myapp.coredata"でキューを作成したとします。次に-newObjectWithProperties:と呼んで同じラベルのキューを再作成しますが、そのキューの以前のバックグラウンドタスクはまだ不完全ですが、そのキューのローカルな「レクリエーション」は同じ実際のキューに対応しますか?それとも、例外を投げますか?後者の場合、クラス全体のインスタンス変数がキューに必要であると推測します。

ivarが必要であると仮定すると、これに対してどのようにメモリ管理を行うべきですか?私は-initdispatch_queue_create()を使用し、にdispatch_release()と呼んでいますか?

答えて

0

私は同様のことをしますが、私はキューを一度作成し、バックグラウンドタスクをディスパッチする必要があるときはいつでもそのキューを再利用します。キューは最初に必要なとき(initではなく)作成され、ivarに格納され、deallocで破棄されます。

+0

キューの存在を確認する方法はありますか、単に変数が 'nil'ですか? – Stuart

+0

いいえ、私はヌルチェックを使用します。それが不透明なタイプなので、Nilが動作するかどうかはわかりません。 Nilが今働いているのかどうかは思い出せません。 – RyanR