2011-12-28 31 views
1

さらに一般的には、同期バージョンと非同期バージョンの両方(NSURLConnectionなど)を持つプロシージャでは、dispatch_asyncブロックに同期バージョンを「ラッピングする」そうですね:dispatch_asyncブロックで同期NSURLConnectionをラップすると非同期接続

dispatch_async(operationQueue, 
^{ [Class doSyncOperation]; 
}); 

と同じ操作の非同期バージョンを呼び出すだけですか?

+0

私は今のところ手元にリンクがありません。しかし、私はリンゴの仕様のどこかに、パフォーマンス上の理由から、GDCで同期バージョンを使用するよりも非同期バージョンを好むべきであるという声明があることを覚えていると思います。 – HeikoG

+0

私はそれもそうだと思っています。私は基本的にスレッドの仕組みについては何も知らない。 –

答えて

2

APIの非同期バージョンは、多くの場合、追加情報を提供し、場合によっては最適化を行います。たとえば、NSUrlConnectionの非同期バージョンには、レスポンスの受信、データの受信、失敗、コードのカスタマイズを可能にする成功など、さまざまなイベントのコールバックがあります。例では、NSURLConnectionの非同期バージョンを使用してプログレスバーを作成することができます。 dispatch_asyncを使用して追加情報を必要としない場合は動作しますが、呼び出すものがスレッドの閉じ込めを使用していることを確認する必要があります。ライブラリが提供するスレッド最適化も失われる可能性があります。