Ленивые свойства
Отличие ленивых свойств от обычных в моменте установки их начальных значений. У ленивых это происходит во время первого обращения к ним, а не при инициализации экземпляра. Эта особенность позволяет сдвинуть исходное задание тяжело вычисляемых свойств на потом, до их фактической надобности.
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