Ios 继承初始化类中的Swift错误
我不想初始化我的B对象时出错 我的错误是:Ios 继承初始化类中的Swift错误,ios,swift,class,inheritance,Ios,Swift,Class,Inheritance,我不想初始化我的B对象时出错 我的错误是:在super.init初始化self之前在属性访问“name”中使用“self” class A { let name = "myName"; } class B:A { let point: ObjectWithName; init() { self.point = ObjectWithName(name); // error here super.init(); } } 谢谢你的帮
在super.init初始化self之前在属性访问“name”中使用“self”
class A {
let name = "myName";
}
class B:A {
let point: ObjectWithName;
init() {
self.point = ObjectWithName(name); // error here
super.init();
}
}
谢谢你的帮助 问题是您正在访问超类中声明的
name
。但超类尚未初始化(它将在super.init()
之后初始化)
所以这是一个逻辑问题
解决方案#1
您可以将点
声明为惰性
,这样它将在整个init
过程完成后执行,除非您之前调用它
struct ObjectWithName {
let name: String
}
class A {
let name = "myName";
}
class B: A {
lazy var point: ObjectWithName = { ObjectWithName(name:self.name) }()
}
解决方案#2
在A
中,您可以将名称
定义为静态
class A {
static let name = "myName";
}
class B:A {
let point: ObjectWithName;
override init() {
self.point = ObjectWithName(name: B.name)
super.init();
}
}