教程中使用 environment 来注入了一个 class 的实例 @StateObject var a = SomeClass()
, 在某页面中(SwiftUI) 将这个 a 传递给一个子页面, 需要在子页面中使用 @Binding, 传递时候需要使用 $a 来传递它的 projectedValue.
我的疑惑: class 不是 reference 类型吗? 为什么还要这样传递? 比如:
class Foo {
var a: String
init(a: String) {
self.a = a
}
}
var foo = Foo(a: "aaa")
print(foo.a)
var bar = foo
bar.a = "bbb"
print(foo.a) // bbb
func baz(f: Foo) {
f.a = "xxx"
}
baz(f: bar)
print(foo.a) // xxx
可能是因为 @StateObject
作用让它发生了变化? 为什么不直接使用 class 这种引用类型?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.