gpt4 book ai didi

swift - init let properties 在 swift 的子类中引用 self

转载 作者:行者123 更新时间:2023-11-28 10:30:29 25 4
gpt4 key购买 nike

我学得很快,经常遇到以下问题。我将有一个带有属性的类,感觉它应该是一个 let 属性,因为它只会被设置一次。我还希望这个子对象保持对其所有者的引用,这也应该是一个 let 属性,因为父关系不会改变。当父类子类化另一个类并且所有 let 属性需要在 super.init () 运行之前设置但需要引用 self< 时,就会出现问题 初始化。

这是一个简单的例子

class NodeView: UIView {
let _nodePlugView: NodePlugView

init (node: Node) {
_nodePlugView = NodePlugView (parentView: self)
super.init ()
}
}

当然,我可以只对这些 _nodePlugView 使用 var,但感觉不太对。人们会推荐另一种模式吗?

最佳答案

你可以使用一个惰性变量。

lazy var _nodePlugView: NodePlugView = NodePlugView(parentView: self)

惰性变量在对象本身初始化后初始化。

如果您真的需要将其作为 let 常量,另一种方法可能是为 NodePlugView 设置一个不采用 parentView 参数的初始化程序,并在其初始化后设置 parentView 的方法。

let _nodePlugView: NodePlugView

init (node: Node) {
_nodePlugView = NodePlugView()
super.init()
_nodePlugView.setParentView(self)
}

关于swift - init let properties 在 swift 的子类中引用 self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56332822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com