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 – 有没有办法判断是否已经初始化了懒惰变量?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)