在Swift中我有这种类型:
typealias AsyncBlock = (completionHandler: dispatch_block_t) -> Void
我将此扩展名添加到NSOperationQueue:
extension NSOperationQueue {
func addAsyncOperationWithBlock(block: AsyncBlock) {
addOperation(MyOperation(block: block))
}
}
我想通过以下方式从Objective-C中调用它:
[self.queue addAsyncOperationWithBlock:^{
// code
}];
但我得到的是上面代码上的这个错误:
Incompatible block pointer types sending 'void (^)(void)' to
parameter of type 'void (^ _Nonnull)(void (^ _Nonnull __strong)(void))'
任何人都可以帮助解决问题吗?
答案 0 :(得分:2)
传递给函数的块类型(带0参数)与声明(带有dispatch_block_t类型的1参数)不同。
所以你应该像这样使用它:
[self.queue addAsyncOperationWithBlock:^(dispatch_block_t completionHandler) {
//do something...
}];