1、swift中构造函数有特殊规定:分为designed和convenience函数,其中convenience函数必须表用类自身的构造函数,通常是init(......),也就是说convenience是对构造函数的进一步扩展
2、每一个convenience最终的调用都是designed函数
3、每一个designed调用的父类必须是一个designed
init(style: UITableViewStyle) {
super.init(nibName:nil,bundle:nil)
// Custom initialization
data = ["1","2","3","4","5"]
}
convenience init(style: UITableViewStyle, data:NSArray ) {
self.init(style: style) //designed函数必须最先调用
self.data = data
}
convenience:便利,使用convenience修饰的构造函数叫做便利构造函数
便利构造函数通常用在对系统的类进行构造函数的扩充时使用。
便利构造函数的特点:
1、便利构造函数通常都是写在extension里面
2、便利函数init前面需要加载convenience
3、在便利构造函数中需要明确的调用self.init()
extension UIButton {
//Swift中类方法是以Class开头的方法,类似于OC中+开头的方法
class func createButton(imageName: String,bgImageName:String) -> UIButton{
let btn = UIButton(type: .custom)
btn.setImage(UIImage(named: imageName), for: .normal)
btn.sizeToFit()
return btn
}
convenience init(imageName: String,bgImageName: String){
self.init()
setImage(UIImage(named: imageName), for: .normal)
setBackgroundImage(UIImage(named: bgImageName), for: .normal)
sizeToFit()
}
}