当我运行该功能时
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
}
我收到以下异常+ SIGABRT:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [__ NSCFBoolean shootBullet]:无法识别的选择器发送到实例...
上述两个函数都在Swift3中运行的SKScene的子类中。
值得注意的是,与#selector(test)
答案 0 :(得分:0)
您在target
设置Boolean
值时犯了错误。
target
是定时器触发时发送aSelector指定的消息的对象。计时器保持对目标的强引用,直到它(计时器)无效。
如果您在安排target
的课程中存在方法,只需将self
设置为Timer
。
let shootTimer = Timer.scheduledTimer(timeInterval: bulletInfo.frequency, target: self, selector: #selector(shootBullet), userInfo: nil, repeats: true)