1

次のようなブロックを定義しました。

void (^observerBlock) (id aTrigger, id aContext, void(^aTriggerCallbackBlock)(id aTContext)) = ....

今、私はそれを NSOperationQueue に入れて、同時に実行したいと考えています。しかし、NSOperationQueue のインスタンス メソッドは、次のaddOperationWithBlock:ような引数のみを許可します(void (^)(void))block

複数の引数を持つブロックを NSOperationQueue に入れるにはどうすればよいですか? ありがとう。

4

1 に答える 1

1

これを行う 1 つの方法は、NSOperationまたはNSBlockOperationクラスをサブクラス化して特殊な操作クラスを作成し、値を引数として渡す代わりに必要なプロパティをサブクラスに追加することです。

別の方法は、ブロック内で必要な変数を参照するだけで、ブロックが作成されると参照/値がコピーされます。これらの値を変更できるようにする必要がある場合は、ブロック内で参照している変数に __block を使用できます。

于 2012-10-19T14:10:36.080 に答える