Ленивые свойства

Отличие ленивых свойств от обычных в моменте установки их начальных значений. У ленивых это происходит во время первого обращения к ним, а не при инициализации экземпляра. Эта особенность позволяет сдвинуть исходное задание тяжело вычисляемых свойств на потом, до их фактической надобности.

import Foundation

class Message {
    private(set) var lastText: String?
    
    lazy var text: String = {
        // Very long calculations...
   
        let value = "I'm lazy"

        self.lastText = value
        return value
    }()
}

let message = Message()

print(message.lastText)
// nil

print(message.text)
// I'm lazy

print(message.lastText)
// I'm lazy