2012-01-19 25 views
4

いつブロックをコピーする必要があるかわかりません。
ドキュメントにはwhen you expect the block to be used after destruction of the scope within which it was declaredと記載されています。ブロックをいつコピーする必要がありますか?

たとえば、コールバックメソッドとして使用しているときにコピーする必要がありますか?コピーでは、ブロックのコピープロパティを作成し、そこにブロックを保存するか、何らかの形でコピーメッセージを送信することを意味します。スコープはおそらく、ダウンロードなどが終了したときに破棄されます。その場合、ブロックをコピーする必要がありますか?この方法で循環参照を作成できますか?

現在、ブロックをテストするためには、完成ブロックを使用するダウンローダクラスを使用していますが、ブロックをコピーすると、そのブロックを作成したビューコントローラとダウンローダクラスは解放されません。

特に、ファイルのダウンロードなどの非同期処理を終了するための良い例がありますか?

ありがとうございました。

答えて

6

のためのブロックをコピーするコールバックを取る時間メソッドのほとんどあなた

あなたがしているのObjective-C

  • でブロック自分自身をコピーする必要があるとき、私は2例と考えることができますブロックをクラス変数に保存するときに、関数からブロックを返す(これは、後でコールバックを受け入れるメソッドを実装している場合に起こります)。

ブロックが使用または処理される前にスコープから外れる時間です。

+0

"コールバックを取る時間メソッドのほとんどは、ブロックをコピーします"私はそれをコピーする必要がありますいくつかの非同期操作のためのコールバックブロックを取る方法だと? –

+0

@gyozokudorはい、ケース2に該当します – cobbal

関連する問題