我已经定义了一个这样的块:
void (^observerBlock) (id aTrigger, id aContext, void(^aTriggerCallbackBlock)(id aTContext)) = ....
现在我想将它放入NSOperationQueue并同时执行。但是NSOperationQueue的实例方法addOperationWithBlock:
只允许这样的参数:(void (^)(void))block
。
如何将具有多个参数的块放入NSOperationQueue?感谢。
答案 0 :(得分:1)
执行此操作的一种方法是将NSOperation
或NSBlockOperation
类子类化以创建专用操作类,然后将所需的属性添加到子类中,而不是将值作为参数传递。
另一种方法是只引用块中需要的变量,当块被创建时,它将复制引用/值。如果您需要更改这些值,可以在块中引用的变量上使用__block。