首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用#selector swift3时出现的swift3异常

使用#selector swift3时出现的swift3异常
EN

Stack Overflow用户
提问于 2016-11-19 04:32:46
回答 1查看 73关注 0票数 0

当我运行这个函数时

代码语言:javascript
复制
func makeSpriteShoot(bullets bulletInfo:MHBulletInformation,player playerSprite:SKSpriteNode){
    print("Foo")
    let shootTimer = Timer.scheduledTimer(timeInterval: bulletInfo.frequency, target: true, selector: #selector(shootBullet), userInfo: nil, repeats: true)
}
func shootBullet(){
    player.shootBullet(angle: 90)//player is a instance of a subclass of SKSpriteNode
}

我得到以下exception+SIGABRT:

终止应用程序由于未识别的异常'NSInvalidArgumentException',原因:‘_ sent布尔shootBullet:未识别的选择器发送到实例.

上述两个函数都在运行在SKScene中的Swift3子类中。

值得注意的是,与#selector(test)不同,我没有收到任何编译时错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-19 04:40:13

您在使用target值设置Boolean时犯了错误。

target是在计时器触发时向其发送由aSelector指定的消息的对象。计时器保持对目标的强烈引用,直到它(定时器)失效为止。

因此,只需将target设置为self,如果在调度Timer的类中存在方法。

代码语言:javascript
复制
let shootTimer = Timer.scheduledTimer(timeInterval: bulletInfo.frequency, target: self, selector: #selector(shootBullet), userInfo: nil, repeats: true)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40689232

复制
相关文章

相似问题

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