ios – 在子类上创建方便的初始化程序,调用可用的初始化程序

尝试了下面的推导的许多变化但没有工作.

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指定的初始化程序后可用吗?我错了什么?

初始化委派规则#2声明

A convenience initializer must call another initializer from the same
class.

你的类没有定义init?(named:String),所以它会调用超类初始化器(你可以根据你所指的其他规则#2访问它),但这不符合调用a的要求你班上的非便利初始化者.

您可以在调用超类初始化程序之前调用self.init.

convenience init? (i:UIViewController){
        self.init()
        self.init(named:"") 
}
相关文章
相关标签/搜索