Swift 中的初始化方法
2019-10-21 本文已影响0人
大成小栈
class ViewControllerT: UIViewController {
init(){
super.init(nibName: nil, bundle: nil)
self.view.backgroundColor = UIColor.red
}
init(name : String ,age : Int) {
super.init(nibName: nil, bundle: nil)
self.view.backgroundColor = UIColor.blue
print(name,age);
}
convenience init(name : String) {
self.init(name: "豆豆", age: 1)
self.view.backgroundColor = UIColor.orange
print(name);
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
//调用方式
var base1 = ViewControllerT()
var base2 = ViewControllerT.init(name: "豆豆", age: 18)
var base3 = ViewControllerT.init(name: "豆豆")
- required关键字
如果有required修饰的designated init方法,就表示子类一定要实现该init方法,强制子类重写该方法。 - convenience关键字
convenience修饰init方法的作用是增加便捷的init方法。convenience init方法必须调用本类中 的designated初始化方法完成初始化设置,且convenience的初始化方法不能被子类重写或者是从子类中以super的方式被调用