What is the Difference Between Repeating and Non-Repeating Timers in Swift?

Timers are a fundamental component of app development, allowing you to schedule tasks, update the UI, and control various time-based functions. In Swift, there are two common types of timers: repeating timers and non-repeating timers. Understanding the differences between these timer types is crucial for effective iOS and macOS app development. In this guide, we’ll explore the distinctions between repeating and non-repeating timers and when to use each.

Repeating Timers

A repeating timer is a timer that automatically reschedules itself to run at regular intervals until it’s explicitly invalidated. Here are some key characteristics of repeating timers:

  1. Repetitive Execution: Repeating timers execute a specified block of code at regular intervals, providing periodic updates or running scheduled tasks.
  2. Use Cases: Repeating timers are ideal for tasks that need to occur repeatedly, such as updating real-time data, refreshing a user interface, or managing background processes.
  3. Continual Operation: Repeating timers continue to run until they are explicitly invalidated using the invalidate method.
  4. Example: An example of a repeating timer is an app that updates a live score every 30 seconds.

Non-Repeating Timers

Non-repeating timers, also known as one-shot timers, execute their associated code only once. Key characteristics of non-repeating timers include:

  1. Single Execution: Non-repeating timers execute their code once and automatically invalidate themselves after completion.
  2. Use Cases: Non-repeating timers are useful for situations where you need a single, time-based action, such as delaying a function call, implementing a time-based animation, or scheduling a reminder.
  3. Automatic Invalidation: Non-repeating timers do not need manual invalidation, making them suitable for one-time operations.
  4. Example: A non-repeating timer can be used to display a brief splash screen when an app is launched.

When to Use Each Type

The choice between a repeating and non-repeating timer depends on your app’s specific requirements. Here are some guidelines:

  • Repeating Timer: Use a repeating timer when you need periodic, continuous execution of a task, such as updating live data or polling a server for updates.
  • Non-Repeating Timer: Choose a non-repeating timer when you require a one-time action, like delaying a function call or presenting a temporary interface element.

Implementation in Swift

In Swift, both repeating and non-repeating timers can be created using the Timer class. Here’s a basic example of creating a repeating timer:

let repeatingTimer = Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(updateData), userInfo: nil, repeats: true)

And here’s an example of a non-repeating timer:

let nonRepeatingTimer = Timer.scheduledTimer(timeInterval: 10.0, target: self, selector: #selector(runOnce), userInfo: nil, repeats: false)


Repeating and non-repeating timers are essential tools for time-based functionality in Swift app development. Understanding when to use each type is crucial for building efficient and responsive applications. By selecting the appropriate timer type, you can ensure that your app performs tasks accurately and efficiently according to its specific needs.

In summary, repeating timers are designed for continuous, periodic tasks, while non-repeating timers are ideal for one-time actions.

Happy coding!

A pat on the back !!