Swift:构造器

Swift 编译器将执行 4 种有效的安全检查,以确保两段式构造过程能不出错地完成:

  • 安全检查 1
    指定构造器必须保证它所在类引入的所有属性都必须先初始化完成,之后才能将其它构造任务向上代理给父类中的构造器。
    如上所述,一个对象的内存只有在其所有存储型属性确定之后才能完全初始化。为了满足这一规则,指定构造器必须保证它所在类引入的属性在它往上代理之前先完成初始化。

  • 安全检查 2
    指定构造器必须先向上代理调用父类构造器,然后再为继承的属性设置新值。如果没这么做,指定构造器赋予的 新值将被父类中的构造器所覆盖。

  • 安全检查 3
    便利构造器必须先代理调用同一类中的其它构造器,然后再为任意属性赋新值。如果没这么做,便利构造器赋予的新值将被同一类中其它指定构造器所覆盖。

  • 安全检查 4
    构造器在第一阶段构造完成之前,不能调用任何实例方法,不能读取任何实例属性的值,不能引用 self 作为一个值。


构造器的自动继承

  • 规则 1
    如果子类没有定义任何指定构造器,它将自动继承所有父类的指定构造器。

  • 规则 2
    如果子类提供了所有父类指定构造器的实现——无论是通过 规则 1 继承过来的,还是提供了自定义实现——它将自动继承所有父类的便利构造器。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容