【发布时间】:2015-07-29 03:14:03
【问题描述】:
所以我正在创建一个应用程序/游戏,您可以在其中点击与图片相对应的按钮,然后计时器用完并且您输了。您有 1 秒钟的时间点击按钮,如果您选择正确的按钮,则计时器会重置并出现新图片。我在重置计时器时遇到问题。即使我尝试重置它,它也会在一秒钟后触发。代码如下:
loadPicture() 运行 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()
}
}
这里是 resetTimer() 方法:
func resetTimer(){
timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("gameOverTimer"), userInfo: nil, repeats: false)
}
我认为这可能与 NSRunloops 有关?我不知道。老实说,我什至不知道 NSRunloop 是什么。
【问题讨论】:
-
我不知道为什么你的定时器在你失效后会触发,但是你的递归中有一个检查重复项的错误 - 你覆盖
randomInt以便在递归调用loadPicture您实际上是在检查此随机数是否与上一个随机数相同,而不是此随机数是否与显示的上一张图片相同 -
在 loadPicture() 之前 resetTimer() 行写入 timer = nil 。 . .
-
为了确定,您是在同一个线程中创建计时器吗?其次,您是否尝试将超时时间延长到 5 秒?
-
Paulw11,没有错误。 randomInt 表示图片在数组中的索引。如果int相同,图片也相同。
-
iHart,没用 :(
标签: ios xcode swift nstimer reset