为什么在初始化程序中设置时调用 didSet?

Pet*_*rbo 5 swift swiftui

我在玩 SwiftUI,我有一个看起来像这样的类:

class Foo: ObservableObject {

    @Published var foo: Int! { // Implicit unwrapped optional
        didSet {
            print("foo")
        }
    }

    init() {
        self.foo = 1
    }
}
Run Code Online (Sandbox Code Playgroud)

didSet 总是被调用。根据Apple 文档,不应调用它。@Published属性包装器有什么特别之处吗?

mat*_*att -3

规则是初始化期间不会调用 setter 观察者。但是当你设置这个属性时,初始化就结束了!该属性已被赋予其初始值,即nil。因此,即使您在一个init方法中,在初始化期间您也不是 \xe2\x80\x9cd,并且 setter 观察器运行。

\n