swift – 有没有办法判断是否已经初始化了懒惰变量?

swift – 有没有办法判断是否已经初始化了懒惰变量?,第1张

概述我不想初始化一个视图控制器,直到我需要显示它的视图.所以我把它放在一个懒惰的var中: lazy var foo: NSViewController! = { let foo = NSViewController() foo.representedObject = self.representedObject return foo}()// ...override 我不想初始化一个视图控制器,直到我需要显示它的视图.所以我把它放在一个懒惰的var中:

lazy var foo: NSVIEwController! = {    let foo = NSVIEwController()    foo.representedobject = self.representedobject    return foo}()// ...overrIDe var representedobject: Any? {    dIDSet {        if foo != nil {            foo.representedobject = representedobject        }    }}

self.representedobject在foo被引用之前设置,但是每当我调用foo!= nil时,它都会初始化foo:c

如果已经设置了foo,我有什么办法可以测试吗?

解决方法 lazy只是一个特定的lazy-instantiation模式的便利包装器(而且只是一个中等有用的模式).如果你想要自己的模式,不要使用懒惰;只是自己建造它.

private var _foo: NSVIEwController? = nilvar foo: NSVIEwController {    if let foo = _foo {        return foo    }    let foo = NSVIEwController()    foo.representedobject = self.representedobject    _foo = foo    return foo}// This can be private or public,as you like (or you don't technically need it)var isFooloaded: Bool {    return _foo != nil}overrIDe var representedobject: Any? {    dIDSet {        if !isFooloaded {            foo.representedobject = representedobject        }    }}

这是为了遵循isVIEwLoaded模式,它解决了相同的基本问题.

总结

以上是内存溢出为你收集整理的swift – 有没有办法判断是否已经初始化了懒惰变量?全部内容,希望文章能够帮你解决swift – 有没有办法判断是否已经初始化了懒惰变量?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1006226.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存