Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift选择器-发送到实例的无法识别的选择器_Ios_Swift_Selector_Nstimer - Fatal编程技术网

Ios Swift选择器-发送到实例的无法识别的选择器

Ios Swift选择器-发送到实例的无法识别的选择器,ios,swift,selector,nstimer,Ios,Swift,Selector,Nstimer,我有一个功能: func runRockRotation(rockSprite: SKSpriteNode){ startRockRotationAnimation(rockSprite, isRock: true) } runRockRotation(rock) 当我这样称呼它时: runRockRotation(rock) 它可以工作,但我似乎无法将它放入NSTimer选择器中 runRockRotation(rock) var timer = NSTimer.schedul

我有一个功能:

func runRockRotation(rockSprite: SKSpriteNode){
    startRockRotationAnimation(rockSprite, isRock: true)
}
runRockRotation(rock)
当我这样称呼它时:

runRockRotation(rock)
它可以工作,但我似乎无法将它放入NSTimer选择器中

runRockRotation(rock)
var timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "runRockRotation:", userInfo: rock, repeats: false)
阅读了很多论坛,尝试了以下内容:

runRockRotation(rock)
var timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "runRockRotation()", userInfo: rock, repeats: false)
var timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "runRockRotation(_)", userInfo: rock, repeats: false)
var timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "runRockRotation", userInfo: rock, repeats: false)
此外,尝试不使用岩石,使用零,但似乎没有任何工作

runRockRotation(rock)
每次我得到:

runRockRotation(rock)
2015-04-10 15:49:03.830 Meh[1640:218030] -[__NSCFTimer runAction:completion:]: unrecognized selector sent to instance 0x174166840
2015-04-10 15:49:03.832 Meh[1640:218030] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFTimer runAction:completion:]: unrecognized selector sent to instance 0x174166840'

如何在带有参数的选择器中调用函数?我知道如何在目标C中做到这一点,但似乎不能在Swift中做到这一点。感谢您的帮助。

请查看文档以了解更多信息

runRockRotation(rock)
你会看到的

runRockRotation(rock)
选择器应具有以下签名:
timerFireMethod:
(包括一个冒号,指示该方法采用参数)

runRockRotation(rock)
计时器将自身作为参数传递,因此该方法将采用 以下模式:
-(void)timerFireMethod:(NSTimer*)计时器

runRockRotation(rock)
您的函数与此模式不匹配,因此无法找到相应的选择器

runRockRotation(rock)
使用类似-

runRockRotation(rock)
func runRockRotationForTimer(_ timer: NSTimer){
    self.runRockRotation(timer.userInfo as? SKSpriteNode)
    timer.invalidate();
}
并使用

runRockRotation(rock)
var timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "runRockRotationForTimer:", userInfo: rock, repeats: false)

还有助于确保目标对象(在您的情况下为self)是NSObject的子类

runRockRotation(rock)
var timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: <THIS MUST BE NSOBJECT SUBCLASS>, selector: "runRockRotation:", userInfo: rock, repeats: false)
var timer=NSTimer.scheduledTimerWithTimeInterval(1.0,目标:,选择器:“runRockRotation:”,用户信息:rock,重复:false)

您在哪里调用计时器?是否在已定义的类中创建计时器?你把“self”作为目标,也许这不是你需要的?使用:
selector:“runRockRotation:”
FWIW我还必须公开我的函数