美文网首页
十八、Swift3.0之便利构造函数

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

作者: ZhengYaWei | 来源:发表于2017-02-27 19:33 被阅读88次

遍历构造函数在类别中使用比较常见,如在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

  • 正常的构造函数一定会创建对象
  • 判断给定的参数是否符合条件,如果不符合条件,直接返回nil,不会创建对象,减少内存开销。
    3、只用便利构造函数中,才能使用self.init 构造当前对象
  • 没有convenience关键字的构造函数式负责创建对象的,反之用来检查条件的,本身不负责对象的创建。
    4、注意init后面有?
    5、如果在遍历构造函数中使用当前对象的属性,一定要在self.init之后。
    6、在实际开发中写的很少,但是系统方法创建对象时有很多便利构造函数
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)

相关文章

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

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

  • swift3.0 - 便利构造函数

    条件判断,只有满足条件,才实例化对象,可以防止造成不必要的内存开销 简化对象的创建 本身不负责属性的创建和初始化工...

  • Swift面试题总结

    1.convenience : 便利,使用convenience修饰的构造函数叫做便利构造函数 // 便利构造函数...

  • 便利构造函数

    convenience:便利,使用convenience修饰的构造函数叫做便利构造函数 便利构造函数通常用在对系统...

  • convenience 便利构造器

    convenience:便利,使用convenience修饰的构造函数叫做便利构造函数便利构造函数通常用在对系统的...

  • Swift4 便利构造器(convenience)

    convenience:便利,使用convenience修饰的构造函数叫做便利构造函数便利构造函数通常用在对系统的...

  • Swift便利构造函数convenience

    便利构造函数: convenience 便利构造函数是对构造函数的一种功能扩充, 可以在初始化之前,根据指定的条件...

  • 便利构造函数

    便利构造函数并不负责创建对象,在便利构造函数中可以对属性进行判断,判断是否符合创建条件,也可以为创建的对象赋值,但...

  • 便利构造函数

    在我的理解, 便利就是参数少或者不需要参数就能使用创建合适的对象, 如UIView的实例。 如下 效果如图: 便利...

  • Swift 杂谈(二)

    1,convenience便捷构造函数 convenience :便利,使用convenience 修饰的构造函数...

网友评论

      本文标题:十八、Swift3.0之便利构造函数

      本文链接:https://www.haomeiwen.com/subject/ytqtgttx.html