Binding<T>
является делегатом свойства @Binding
.
$ myText дает вам Binding<String>
.
Способ, которым @State
«выполняет связывание», как вы его описали, состоит в том, чтобы дать вам Binding<String>
, инициализированный с помощью метода получения / установки, который захватывает ссылку на экземпляр State<T>
.
Теперь TextField
изменяет значение myText, вызывая установщик привязки pass-in, который, в свою очередь, вызывает установщик State<T>
, который фактически устанавливает myText.
Как видите, привязка не обязательно должна иметь фактическое сохраненное свойство, она делегирует другому экземпляру, который имеет хранилище, которое в данном случае равно @State
. Отсюда и название.