#ios #swift #swiftui
Вопрос:
Я довольно новичок в SwiftUI, и мне было любопытно, что произойдет, если родительское представление передаст две переменные привязки в дочернее состояние, т. е. одна переменная на самом деле является частью другой переменной (например $item
,amp; $item[0]
).
В представлении ребенка я сначала изменяю item
и подтверждаю, что items
это также обновляется. Затем я обновился items
и заметил, что item
это тоже мутировало. Это означает, что если мы установим items
значение в пустой массив, то будет отсутствующий индекс для item
. Существует ли строгое объяснение этого с точки зрения памяти, обернутого значения/проектного значения и т. Д.?
struct ChildView: View {
@Binding var item: String
@Binding var items: [String]
var body: some View {
return Button("test") {
self.item = "hello"
print("item: " self.item)
print("items: " self.items.description)
self.items = ["new", "world"]
print("item: " self.item)
}
}
}
struct ContentView: View {
@State var list: [String] = ["oldZero", "oldOne"]
var body: some View {
ChildView(item: $list[0], items: $list)
}
}
и в результате получается:
item: hello
items: ["hello", "oldOne"]
item: new