Also erstelle ich eine App/ein Spiel, wo du einen Knopf tippst, der einem Bild entspricht, bevor der Timer abgelaufen ist und du verlierst. Sie erhalten 1 Sekunde, um auf den Knopf zu tippen, und wenn Sie den richtigen Knopf wählen, wird der Timer zurückgesetzt und ein neues Bild erscheint. Ich habe Probleme beim Zurücksetzen des Timers. Es wird nach einer Sekunde ausgelöst, auch nachdem ich versucht habe, es zurückzusetzen. Hier ist der Code:Wie NSTimer zurücksetzen? swift code
Loadpicture() wegläuft viewDidLoad()
func loadPicture() {
//check if repeat picture
secondInt = randomInt
randomInt = Int(arc4random_uniform(24))
if secondInt != randomInt {
pictureName = String(self.PicList[randomInt])
image = UIImage(named: pictureName)
self.picture.image = image
timer.invalidate()
resetTimer()
}
else{
loadPicture()
}
}
und hier ist der resetTimer() -Methode:
func resetTimer(){
timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("gameOverTimer"), userInfo: nil, repeats: false)
}
Ich denke, es kann etwas mit NSRunloops zu tun? Ich bin mir nicht sicher. Ich weiß nicht einmal, was ein NSRunloop ist, um ehrlich zu sein.
Ich bin nicht sicher, warum Ihre Timer feuert, nachdem Sie es ungültig , aber Sie haben einen Fehler in Ihrer Rekursion, der nach Duplikaten sucht - Sie überschreiben 'randomInt', so dass Sie beim rekursiven Aufruf von' loadPicture 'effektiv prüfen, ob diese Zufallszahl die gleiche ist wie die vorherige Zufallszahl, nicht wenn diese zufällig ist Nummer ist die s ame als das vorherige Bild, das – Paulw11
in loadPicture() vor resetTimer() Zeile write timer = nil angezeigt wurde. . . – iHart
Um nur sicherzustellen, erstellen Sie den Timer in demselben Thread? Zweitens, hast du versucht, die Zeit um 5 Sekunden zu erhöhen? – Shripada