这两个片段等价吗



这两个片段是相同的吗?在第一个应用程序上,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?

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

最新更新