Swift

作者: HenryM | 来源:发表于2015-09-16 22:26 被阅读218次

    构造器调用链的规则

    Swift对构造器之间的调用链制定了如下3条规则:
    1.  子类构造器必须调用直接父类的指定构造器(如果有父类)
    2.  便利构造器必须调用同一个类中得其他构造器
    3.  便利构造器调用的构造器链的最终节点必须是制定构造器
    简化记忆为:
    1.  指定构造器总是向上代理(调用父类构造器)
    2.  便利构造器总是必须横向代理(调用当前类的其他构造器)
    
    类的构造器链

    两段式构造

         1、类的构造需要两个阶段:
                第一阶段:
                1.  程序调用子类的某个构造器;
                2.  为实例分配内存,此时实例的内存还没有被初始化;
                3.  指定构造器确保子类定义的所有实例存储属性都已经被赋值;
                4.  指定构造器将调用父类的构造器,完成父类定义的实例存储属性的初始化
                5.  沿着调用父类构造器的构造器链一直往往上执行,直到达到构造器链的最顶部
    

    安全检查

    安全检查1:指定构造器必须先初始化当前类中定义的实例存储属性,然后才能向上调用父类构造器
    安全检查2:指定构造器必须先向上调用父类构造器,然后才能对继承得到的属性赋值
    安全检查3:便利构造器必须先调用同一个类的其他构造器,然后才能进行赋值
    安全检查4:构造器在第一阶段完成之前,不能调用实例方法,不能读取实例属性
    建议:为实例存储属性指定初始值
    

    扩展的特性

    1.  使用扩展添加属性、方法、可变方法、构造器、下标、嵌套类型
    2.  可以使一个已有类型符合一个或者多个协议
    3.  Swift的扩展与Objective-C的类目(category)类似,只是Swift中的扩展没有名字
    4.  扩展并不是派生子类,因此不支持重写
    

    扩展可以添加3种属性

    1.  类型存储属性
    2.  实例计算属性
    3.  类型计算属性
    

    相关文章

      网友评论

        本文标题:Swift

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