Выбор ответа Junior SwiftUI спрашивают часто обновлено
Что такое @Binding
Вопрос
Дочерняя view Toggle-переключателя должна менять флаг, который хранит родитель. Что использовать в ребёнке?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: @Binding var isOn: Bool, а родитель передаёт $isOn. @Binding это двусторонняя ссылка на чужое состояние: чтение и запись идут в источник правды родителя.
Варианты ответа
@State var isOn: Bool, инициализированный значением родителяlet isOn: Boolи замыканиеonChange, которое родитель обновит@Environment(\.isOn), который родитель задаёт модификатором@Binding var isOn: Bool, а родитель передаёт$isOnправильный ответ
Разбор
@Binding это двусторонняя ссылка на чужое состояние: чтение и запись идут в источник правды родителя. Префикс $ у @State даёт Binding. Если сделать в ребёнке свой @State, он скопирует начальное значение и дальше будет жить отдельно, родитель изменений не увидит. Пользовательского ключа окружения isOn нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.