如何将具有多个参数的块放入NSOperationQueue?

时间:2012-10-19 13:59:26

标签: ios cocoa-touch concurrency block nsoperationqueue

我已经定义了一个这样的块:

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

现在我想将它放入NSOperationQueue并同时执行。但是NSOperationQueue的实例方法addOperationWithBlock:只允许这样的参数:(void (^)(void))block

如何将具有多个参数的块放入NSOperationQueue?感谢。

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是将NSOperationNSBlockOperation类子类化以创建专用操作类,然后将所需的属性添加到子类中,而不是将值作为参数传递。

另一种方法是只引用块中需要的变量,当块被创建时,它将复制引用/值。如果您需要更改这些值,可以在块中引用的变量上使用__block。