Swift中隐式懒惰的静态成员
我只是注意到Swift结构的静态成员是隐式的.
例如,这只会调用init一次: class Baz { init(){ print("initializing a Baz") } } struct Foo { static let bar = Baz() } var z = Foo.bar z = Foo.bar 这背后的理由是什么? 如果我想要相反的行为怎么办?
static属性定义了一个“type属性”,一个只实例化一次的类型属性.正如你所注意到的,这种情况很懒散,因为静态就像全局变量一样.正如
The Swift Programming Language: Properties所说:
这种隐含的懒惰行为是因为,正如Swift Blog: Files and Initialization所说:
他们有意识地设计它以避免不必要地延迟应用程序的启动. 如果要在应用程序的某个特定点实例化静态属性(而不是将其推迟到首次使用的位置),只需在该较早的点引用此静态属性,此时将初始化该对象.鉴于我们在减少启动应用程序的延迟方面所付出的努力,您通常不会在应用程序的初始启动期间同步,但您可以随时随地执行此操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |