我首先定义:
void (^cb)(NSUInteger) = ^void(NSUInteger number) {
//SOME OTHER CODE ....
[self.gamePlayLogic removeHeroMovementSegmentLine:number];
};
然后我从中创建一个SKAction(类型为runBlock
),传递一个参数,如下所示:
NSUInteger movementActionsSoFar = [self.movementActions count];
SKAction * codeCompletionAction = [SKAction runBlock:cb(movementActionsSoFar)];
但是,这不起作用,我收到错误消息:
Sending 'void' to parameter of incompatible type 'dispatch_block_t _Nonnull' (aka 'void (^)(void)')
我在这里做错了什么,伙计们?谢谢你的任何建议!
答案 0 :(得分:2)
当您编写cb(movementActionsSoFar)
时,您实际上是在告诉编译器执行 cb
块并以movementActionsSoFar
为参数,然后通过结果是-[SKAction runBlock:]
。 cb
块的结果是void
,这不是-[SKAction runBlock:]
所期望的 - 它想要一个块。
而不是这样,你可以将cb
块包含在另一个块中,如下所示:
[SKAction runBlock:^{ cb(movementActionsSoFar); }];