我如何使用这个Swift 3单例作为IOS项目的全局计时器?
我在Swift 3的另一个线程(显示在最底部)上发现了这段代码,但似乎无法在我的IOS项目中使用 我知道这是一个单例,但我必须承认,我不知道如何在我的IOS项目中使用它,以便计时器可以在所有ViewController中工作 我能做以下事情吗?如果没有,我如何使用这个我如何使用这个Swift 3单例作为IOS项目的全局计时器?,ios,swift,singleton,nstimer,Ios,Swift,Singleton,Nstimer,我在Swift 3的另一个线程(显示在最底部)上发现了这段代码,但似乎无法在我的IOS项目中使用 我知道这是一个单例,但我必须承认,我不知道如何在我的IOS项目中使用它,以便计时器可以在所有ViewController中工作 我能做以下事情吗?如果没有,我如何使用这个 var t = TimeModel.sharedTimer t.startTimer(0.25, testing) var counter = 0 func testing() { counter += 1
var t = TimeModel.sharedTimer
t.startTimer(0.25, testing)
var counter = 0
func testing()
{
counter += 1
print("this is a test \(counter)")
}
我做错了什么?
class TimerModel: NSObject {
static let sharedTimer: TimerModel = {
let timer = TimerModel()
return timer
}()
var internalTimer: Timer?
var jobs = [() -> Void]()
func startTimer(withInterval interval: Double, andJob job: @escaping () -> Void) {
if internalTimer == nil {
internalTimer?.invalidate()
}
jobs.append(job)
internalTimer = Timer.scheduledTimer(timeInterval: interval, target: self, selector: #selector(doJob), userInfo: nil, repeats: true)
}
func pauseTimer() {
guard internalTimer != nil else {
print("No timer active, start the timer before you stop it.")
return
}
internalTimer?.invalidate()
}
func stopTimer() {
guard internalTimer != nil else {
print("No timer active, start the timer before you stop it.")
return
}
jobs = [()->()]()
internalTimer?.invalidate()
}
func doJob() {
for job in jobs {
job()
}
}
}
//像这样调用方法
let timer = TimerModel.sharedTimer
timer.startTimer(withInterval: 0.25) {
self.testing()
}
var counter = 0
func testing() {
counter += 1
print("this is a test \(counter)")
}
如果要在另一个ViewController中调用计时器的选择器方法
var t = TimeModel.sharedTimer.startTimer(0.25, self , testing)
var counter = 0
func doJob() {
counter += 1
print("this is a test \(counter)")
}
您需要对您的方法进行一些更改
func startTimer(withInterval interval: Double, controller: UIViewController, andJob job: @escaping () -> Void) {
if timerTest != nil {
internalTimer.invalidate()
internalTimer = nil
}
jobs.append(job)
internalTimer = Timer.scheduledTimer(timeInterval: interval, target: controller, selector: #selector(doJob), userInfo: nil, repeats: true)
}
调用另一个ViewController
var t = TimeModel.sharedTimer.startTimer(0.25, self , testing)
var counter = 0
func doJob() {
counter += 1
print("this is a test \(counter)")
}
你有什么问题?会发生什么?你想发生什么?你有什么错误吗?有。我收到了Xcode的红旗,它将无法编译。请回答您的问题以显示这些错误。这里发生了什么?