Quindi sto creando un'app/gioco in cui si tocca un pulsante corrispondente a un'immagine prima che scada il tempo e si perda. Ottieni 1 secondo per toccare il pulsante, e se scegli il pulsante giusto, il timer si azzera e viene visualizzata una nuova immagine. Ho problemi a resettare il timer. Spara dopo un secondo, anche dopo che ho provato a resettarlo. Ecco il codice:Come resettare NSTimer? codice rapido
LoadPicture() scappa 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()
}
}
ed ecco il metodo resetTimer():
func resetTimer(){
timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("gameOverTimer"), userInfo: nil, repeats: false)
}
penso che possa avere qualcosa a che fare con NSRunloops? Non ne sono sicuro. Non so nemmeno cosa sia NSRunloop ad essere onesto.
io non sono sicuro perché il timer è sparare dopo aver invalidarla , ma hai un bug nella tua ricorsione che controlla i duplicati - Sovrascrivi 'randomInt' in modo che nella chiamata ricorsiva a' loadPicture' tu stia verificando efficacemente se questo numero casuale è uguale al numero casuale precedente, non se questo casuale il numero è il s come l'immagine precedente che è stata visualizzata – Paulw11
in loadPicture() prima del timer di scrittura della riga resetTimer() = nil. . . – iHart
Per essere sicuri, stai creando il timer nello stesso thread? secondo, hai provato ad aumentare il timeout per dire 5 secondi? – Shripada