我遇到了一个非常简单的问题需要解决,我想我可能会遗漏一些东西。
当尝试创建一个递归变量(?)并且作为所述类的成员的类时,程序崩溃。例如:
class A {
var x: A
init() {
x = A()
}
}
检查崩溃日志会建议排序的递归,init()
被无限调用。
是否有适当的方法/语法来解决此类问题,因为我需要将变量x
输入到类A
,并且初始值设定项必须初始化变量x
上课A
?
答案 0 :(得分:2)
很明显,在某个步骤中,您应该将属性x
保持未初始化状态。因此,最好将其声明为Optional
,并在创建实例后对其进行初始化:
class A {
var x: A?
}
let mainObject = A()
let nestedObject = A()
mainObject.x = nestedObject
答案 1 :(得分:1)
不确定,但我认为你正在寻找这个
class A {
var x: A?
init() {
}
anothermethod() {
x = A()
}
}
你可以像
一样调用这个方法 let a = A()
a.anothermethod()