2015-01-09 5 views
2

У меня есть 3 NSTimers:NSTimers быстры не срабатывают

var timer = NSTimer() 
var scoreTimer = NSTimer() 
var gameTmer = NSTimer() 

Тогда в "viewDidLoad":

var sel = Selector("testFunc:") 

timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: sel, userInfo: nil, repeats: true) 

scoreTimer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: sel, userInfo: nil, repeats: true) 

gameTmer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: sel, userInfo: nil, repeats: true) 

И testFunc просто так:

func testFunc(timer : NSTimer){ 
    println("working") 
} 

Но они не работают. Если я попытаюсь использовать «огонь()», то они вызовут testFunc, но по-другому - нет.

+0

Я тоже не знаю. Они просто не работают –

+0

Попробуйте зарегистрировать таймер с помощью 'NSTimer.scheduledTimerWithTimeInterval (1, target: self, selector:" testFunc: ", userInfo: nil, repeat: true)' (разница в селекторе) – gabuh

+0

Я пробовал он, не работал –

ответ

1

Я нашел решение:

Вы можете удалить .scheduledTimerWithTimeInterval и добавить NSRunLoop.mainRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes) для каждого таймера. Таким образом, ваш код будет выглядеть так:

var sel = Selector("testFunc:") 

timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: sel, userInfo: nil, repeats: true) 

scoreTimer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: sel, userInfo: nil, repeats: true) 

gameTmer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: sel, userInfo: nil, repeats: true) 

NSRunLoop.mainRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes) 

NSRunLoop.mainRunLoop().addTimer(scoreTimer, forMode: NSRunLoopCommonModes) 

NSRunLoop.mainRunLoop().addTimer(gameTmer, forMode: NSRunLoopCommonModes) 
Смежные вопросы