0

私はRunLoopiOSのドキュメントを調べていましたが、ここに示されているアイデアについて説明しています:( 出典:apple.comこれ

RunLoopSourceでは、クライアントスレッド(つまり、上の図のメインスレッド)に次のインターフェイスを提供して、オーディオバッファーにコマンドとデータを入力し、その後、そのバッファーで使用可能なすべてのコマンドを起動します。

// Client interface for registering commands to process
- (void)addCommand:(NSInteger)command withData:(id)data
- (void)fireAllCommandsOnRunLoop:(CFRunLoopRef)runloop 

add commandメソッドでは、NSMutableArrayデータ構造にコマンドを追加するだけです。

私の質問は、これらのコマンドをメソッドとして変数にカプセル化するにはどうすればよいですか。addCommandメソッドのデータ変数はタイプidです。たとえば、そこにブロックを配置できますか?ここにベストプラクティス/サンプルコードなどはありますか?ありがとう。

4

1 に答える 1

1

この手法は、ブロックよりも前のものです。同時実行性でブロックを使用することの利点は、システムで必要なだけの作業をスローできることです。また、デバイススコープ全体を指定すると、複数のコアとスレッドで適切と思われる作業をスケジュールできます。並行NSOperationを使用して、FIFOを実装して作業を受け入れて処理することもできますが、この場合、セカンダリスレッドのみが存在し、システムがそれを提供するのに適していると判断したときに、実行時に再度スケジュールされます。ブロックに勝る利点はありません。

于 2012-09-12T13:01:14.277 に答える