尝试了以下衍生品的许多变体但没有效果。
import Foundation
import SceneKit
class test:SCNScene{
override init(){
super.init()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
convenience init? (i:UIViewController){
self.init(named:"") //Compile Error:use of self delegating initializer before self.init is called
}
}
根据Swift documentation,初始化的规则2,不应该初始化?(命名:String)在实现2指定的初始化程序后,方便的可用初始化程序是否可用?我错了什么?
答案 0 :(得分:8)
初始化委派规则#2声明
便捷初始化程序必须从中调用另一个初始化程序 类。
你的班级没有定义init?(命名:String),所以它会调用超类初始化器(你可以根据你所指的其他规则#2访问它),但这会赢得'满足从您的班级调用非便利初始化者的要求。
您可以在调用超类初始化程序之前调用self.init
。
convenience init? (i:UIViewController){
self.init()
self.init(named:"")
}