Макрос @Observable, введённый в Swift 5.9, — это современная замена протоколу ObservableObject в сочетании с property wrapper'ами @Published. Он упрощает управление состоянием и улучшает производительность.
ObservableObject и помечать каждое свойство с @PublishedObservableObject, который инвалидирует весь view@Observable на классе достаточноТрадиционный подход:
class ViewModel: ObservableObject {
@Published var name: String = ""
@Published var count: Int = 0
}
Современный подход с @Observable:
@Observable
class ViewModel {
var name: String = ""
var count: Int = 0
}
Макрос автоматически синтезирует наблюдение за свойствами на этапе компиляции. Swift отслеживает, какие свойства читаются во время выполнения body view'а, и перерендерит только когда изменяются именно эти свойства.
С ObservableObject изменение любого свойства @Published инвалидирует все view'ы, наблюдающие этот объект. С @Observable view, отображающий только name, не перерендерится, когда изменится count — что делает обновления значительно более точечными и эффективными.
Макрос @Observable автоматически отслеживает, какие именно свойства используются при выполнении body представления, и запускает перерисовку только когда эти свойства меняются.
Новый — ещё не проверен сообществом
Вы