十八、Swift3.0之便利构造函数

2017-02-27  本文已影响88人  ZhengYaWei

遍历构造函数在类别中使用比较常见,如在UIColor+Extension实现一个简单的遍历构造函数:

extension UIColor {
    convenience init(r: CGFloat, g: CGFloat, b: CGFloat, a: CGFloat = 1.0) {
        self.init(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: a)
    }
}

遍历构造函数目的:
1、条件判断,只有满足条件,才实例化对象,可以防止造成不必要的内存开销
2、简化对象创建
3、本身不负责属性的创建和初始化工作

遍历构造函数注意事项:
1、使用convenience关键字
2、便利构造函数允许返回nil

class Person: NSObject {
    
    var name: String?
    var age: Int = 0
    //遍历构造函数
    convenience init?(name: String,age: Int) {
        if age > 100{
            return nil
        }
        //实例化当前对象
        self.init()
        //代码执行到此 self才允许被访问,才能够访问到对象的属性
        self.name = name
    }
}

遍历函数的实际使用案例,使用遍历构造函数是抽取UITextField控件。创建一个Swift文件,命名为UITextField+extension,然后实现如下代码。

//extension类似于OC中的Category
extension UITextField{
    convenience init(placeholder: String?, fontSize: CGFloat = 14,frame: CGRect){
        //实例化当前对象
        self.init()
        //访问属性
        self.frame = frame
        self.borderStyle = .roundedRect
        self.placeholder = placeholder
        self.font = UIFont.systemFont(ofSize: fontSize)
    }
}

外部代码调用形式。

 let tf = UITextField(placeholder: "占位文本", fontSize: 15, frame: CGRect(x: 50, y: 100, width: 100, height: 30))
        view.addSubview(tf)
上一篇 下一篇

猜你喜欢

热点阅读