Timers in Swift

A timer sends a message to an object after a certain amount of time passes. Start by declaring a variable for the timer.

var saveTimer = Timer()

Starting a Timer

Call the scheduledTimer method to start a timer. The scheduledTimer method takes the following arguments:

  • A time interval for how often the timer fires, specified in seconds.
  • Target, which is the object that receives the message from the timer.
  • Selector, which is the function the target should run after receiving the message.
  • UserInfo, which is optional additional information you can send.
  • Repeats, which indicates whether the timer runs once or repeats.

The following code starts a timer to autosave data every 30 seconds:

func startTimer() {
  saveTimer = Timer.scheduledTimer(timeInterval: 30.0,
    target: self, selector: #selector(self.autosave),
    userInfo: nil, repeats: true)
}

The function for the selector needs @objc at the start of the declaration.

@objc func autosave(timer: Timer) {
    
}

Stopping a Timer

Call the invalidate method to stop a timer. The following code stops a timer:

func stopTimer() {
  saveTimer.invalidate()
}

Get the Swift Dev Journal Newsletter

Subscribe and get exclusive articles, a free guide on moving from tutorials to making your first app, notices of sales on books, and anything I decide to add in the future.

    We won't send you spam. Unsubscribe at any time.