【发布时间】:2014-09-22 11:33:55
【问题描述】:
我在尝试在 SWIFT 中管理多个 NSTimer 时遇到了一个小问题。无论我尝试什么,它只会使我创建的最后一个计时器无效。但我需要能够选择使任何计时器无效。
是否有某种方法可以创建一个参考 ID,然后我可以使用该 ID 来选择我想要使其无效的特定 NSTimer?任何帮助都会很棒。
这是我的代码的 sn-p。
import UIKit
var myTimer:NSTimer!
class TimerManager: NSObject {
}
public class Timer {
// each instance has it's own handler
private var handler: (timer: NSTimer) -> () = { (timer: NSTimer) in }
public class func start(duration: NSTimeInterval, repeats: Bool, handler:(timer: NSTimer)->()) {
var t = Timer()
t.handler = handler
myTimer = NSTimer.scheduledTimerWithTimeInterval(duration, target: t, selector: "processHandler:", userInfo: nil, repeats: repeats)
}
@objc private func processHandler(timer: NSTimer) {
self.handler(timer: timer)
}
}
class countdown{
//handles the countdown for the timer and invalidates when it reaches 0
var y = 0
func begin(length:Int) {
y = length
let delta = 1
let delay = 1.0
Timer.start(delay, repeats: true) {
(t: NSTimer) in
self.y -= delta
println(self.y)
if (self.y <= 0) {
t.invalidate()
}
}
}
func end () {
println("timer stopped")
myTimer.invalidate()
}
}
我像这样创建计时器:
countdownTimer.begin(120) //time length in seconds ... 120 = 2 mins
停止计时器:
countdownTimer.end()
【问题讨论】: