Выбор ответа Middle SwiftUI спрашивают часто обновлено
@Observable против ObservableObject
Вопрос
Чем макрос @Observable (iOS 17) лучше ObservableObject с @Published?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: View перерисовывается, только если в body читалось изменённое свойство. С ObservableObject любое изменение @Published отправляет objectWillChange, и перерисовываются все view, подписанные на объект, даже если они читают другое свойство. @Observable отслеживает доступ к свойствам при вычислении body и…
Варианты ответа
@Observableработает и со структурами, а не только с классами- View перерисовывается, только если в
bodyчиталось изменённое свойствоправильный ответ @Observableавтоматически переносит все изменения на главный поток@Observableсохраняет состояние на диске между запусками приложения
Разбор
С ObservableObject любое изменение @Published отправляет objectWillChange, и перерисовываются все view, подписанные на объект, даже если они читают другое свойство. @Observable отслеживает доступ к свойствам при вычислении body и инвалидирует только тех, кто реально читал изменённое. Макрос применяется к классам. Главный поток он не гарантирует, это делает @MainActor. Хранения на диске нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.