1、swift中構(gòu)造函數(shù)有特殊規(guī)定:分為designed和convenience函數(shù)轴总,其中convenience函數(shù)必須表用類自身的構(gòu)造函數(shù),通常是init(......),也就是說convenience是對構(gòu)造函數(shù)的進(jìn)一步擴展
2直颅、每一個convenience最終的調(diào)用都是designed函數(shù)
3、每一個designed調(diào)用的父類必須是一個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函數(shù)必須最先調(diào)用
self.data = data
}
convenience:便利怀樟,使用convenience修飾的構(gòu)造函數(shù)叫做便利構(gòu)造函數(shù)
便利構(gòu)造函數(shù)通常用在對系統(tǒng)的類進(jìn)行構(gòu)造函數(shù)的擴充時使用际乘。
便利構(gòu)造函數(shù)的特點:
1、便利構(gòu)造函數(shù)通常都是寫在extension里面
2漂佩、便利函數(shù)init前面需要加載convenience
3脖含、在便利構(gòu)造函數(shù)中需要明確的調(diào)用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()
}
}