Lazy Loading in Swift: A Performance Optimization Technique

Rashad Shirizada
3 min readMar 21, 2023
Photo by David Clode on Unsplash

Lazy loading is a design pattern used to defer the creation of an object or the execution of a task until it is actually needed. This can improve the performance of your app by reducing the amount of work that needs to be done upfront. In Swift, you can use the lazy keyword to implement lazy loading.

Let’s take an example of a class that has a property that is expensive to initialize:

class Example {
var expensiveProperty: ExpensiveClass

init() {
self.expensiveProperty = ExpensiveClass()
}
}

In this example, the Example class has a property called expensiveProperty that is initialized with an instance of ExpensiveClass. If you create an instance of Example, the ExpensiveClass object will be created immediately, even if you don't need it right away.

Now, let’s implement lazy loading to defer the creation of the ExpensiveClass object until it is actually needed:

class Example {
lazy var expensiveProperty: ExpensiveClass = {
return ExpensiveClass()
}()
}

In this example, we have used the lazy keyword to declare expensiveProperty as a lazy property. The closure assigned to expensiveProperty will not be executed until the property is accessed for the first time.

--

--