首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKAction.runBlock错误

SKAction.runBlock错误
EN

Stack Overflow用户
提问于 2014-09-29 15:39:40
回答 1查看 1.2K关注 0票数 2

下面是我正在使用的SpriteKit测试应用程序中的一些简单代码:

代码语言:javascript
复制
let wait = SKAction.waitForDuration(1)
let perform = SKAction.runBlock({self.checkAnswer()})
let checkAnswerSeq = SKAction.sequence([wait, perform])

我得到了"'SKAction‘是不可兑换的'(Selector,onTarget: AnyObject!) -> SKAction!“第二行出错。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-29 20:44:52

问题产生于这样一个事实:您的runBlock是一个单独的表达式闭包,其中编译器意味着返回语句。因此,所需的runBlock类型是() -> (),而我怀疑您的self.checkAnswer()正在返回一个值(从方法名(可能是Bool)判断)。换句话说,您正在返回一个Bool,其中期望有一个Void。如果你写了一个额外的表达式,错误就会消失:

代码语言:javascript
复制
let perform = SKAction.runBlock { self.checkAnswer(); return () }

或者,真的,任何其他的表达方式:

代码语言:javascript
复制
let perform = SKAction.runBlock { self.checkAnswer(); 42 }

或者,如果您使用返回的值:

代码语言:javascript
复制
let perform = SKAction.runBlock { let x = self.checkAnswer() }

或者简单地说:

代码语言:javascript
复制
let perform = SKAction.runBlock { _ = self.checkAnswer() }

Some people consider this to be a bug。但是,该错误与语言的其他部分完全一致。换句话说,返回类型冲突不应该没有错误,就像在任何其他情况下都不应该发生冲突一样。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26103667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档