这两个片段是等价的吗?

Are these two snippets equivalent?

这两个片段是否相同?是否有可能第一个 myClass 可以在应用程序生命周期的某个时刻被删除?

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
    private let myClass = MyClass()

    func applicationDidFinishLaunching(_ aNotification: Notification) {
        myClass.doSomething()

    }
}
    

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
    private var myClass: MyClass?

    func applicationDidFinishLaunching(_ aNotification: Notification) {
        myClass = MyClass()
        myClass?.doSomething()

    }
}

不,这两个片段不等同。您不能在 Swift 中重新分配 let。在你的第二个片段中:

private let myClass: MyClass?

应该是:

private var myClass: MyClass?

假设您的两个代码片段不包含任何其他可以与变量交互的代码,那么它们将是相同的。