下面是我正在使用的SpriteKit测试应用程序中的一些简单代码:
let wait = SKAction.waitForDuration(1)
let perform = SKAction.runBlock({self.checkAnswer()})
let checkAnswerSeq = SKAction.sequence([wait, perform])我得到了"'SKAction‘是不可兑换的'(Selector,onTarget: AnyObject!) -> SKAction!“第二行出错。有什么想法吗?
发布于 2014-09-29 20:44:52
问题产生于这样一个事实:您的runBlock是一个单独的表达式闭包,其中编译器意味着返回语句。因此,所需的runBlock类型是() -> (),而我怀疑您的self.checkAnswer()正在返回一个值(从方法名(可能是Bool)判断)。换句话说,您正在返回一个Bool,其中期望有一个Void。如果你写了一个额外的表达式,错误就会消失:
let perform = SKAction.runBlock { self.checkAnswer(); return () }或者,真的,任何其他的表达方式:
let perform = SKAction.runBlock { self.checkAnswer(); 42 }或者,如果您使用返回的值:
let perform = SKAction.runBlock { let x = self.checkAnswer() }或者简单地说:
let perform = SKAction.runBlock { _ = self.checkAnswer() }Some people consider this to be a bug。但是,该错误与语言的其他部分完全一致。换句话说,返回类型冲突不应该没有错误,就像在任何其他情况下都不应该发生冲突一样。
https://stackoverflow.com/questions/26103667
复制相似问题