Stworzyłem aplikację/grę, w której dotykasz przycisku odpowiadającego obrazowi, zanim skończy się czas i przegrasz. Dostaniesz 1 sekundę, aby dotknąć przycisku, a jeśli wybierzesz odpowiedni przycisk, timer zresetuje się i pojawi się nowy obraz. Mam problem z ponownym włączeniem timera. Wystrzeliwuje się po jednej sekundzie, nawet po próbie jej zresetowania. Oto kod:Jak zresetować NSTimer? kod swift
loadPicture() ucieka 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()
}
}
i tu jest() metoda resetTimer:
func resetTimer(){
timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("gameOverTimer"), userInfo: nil, repeats: false)
}
myślę, że może to mieć coś wspólnego z NSRunloops? Nie jestem pewny. Nawet nie wiem, co to NSRunloop ma być szczery.
Nie jestem pewien, dlaczego twój zegar jest wypalanie po unieważnić go , ale masz błąd w rekurencji, który sprawdza duplikaty - Nadpisujesz 'randomInt', aby w rekursywnym wywołaniu' loadPicture' skutecznie sprawdzałeś, czy ta losowa liczba jest taka sama jak poprzednia losowa liczba, a nie jeśli losowa liczba to s ame jak poprzednie zdjęcie, które zostało wyświetlone – Paulw11
w loadPicture() przed resetTimerTimer() zapis linii timer = nil. . . – iHart
Aby się upewnić, czy tworzysz timer w tym samym wątku? po drugie, czy próbowałeś zwiększyć czas, żeby powiedzieć 5 sekund? – Shripada