swift -- convenience(便利构造函数) 和类方法

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()
    }
}

你可能感兴趣的:(swift -- convenience(便利构造函数) 和类方法)