我如何使用这个Swift 3单例作为IOS项目的全局计时器?

我如何使用这个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

我在Swift 3的另一个线程(显示在最底部)上发现了这段代码,但似乎无法在我的IOS项目中使用

我知道这是一个单例,但我必须承认,我不知道如何在我的IOS项目中使用它,以便计时器可以在所有ViewController中工作

我能做以下事情吗?如果没有,我如何使用这个

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的红旗,它将无法编译。请回答您的问题以显示这些错误。这里发生了什么?