加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift-Initialization 学习简记

发布时间:2020-12-14 06:18:57 所属栏目:百科 来源:网络整理
导读:1、存储属性初始赋值:构造器中赋值、默认属性值(推荐) 2、自定义构造过程 构造参数:内部外部参数名、不带外部名的构造器参数、可选属性类型、构造过程中常量属性修改、默认构造器、结构体的逐一成员构造器 3、值类型的构造器代理 4、类的继承和构造过程

1、存储属性初始赋值:构造器中赋值、默认属性值(推荐)
2、自定义构造过程 构造参数:内部外部参数名、不带外部名的构造器参数、可选属性类型、构造过程中常量属性修改、默认构造器、结构体的逐一成员构造器
3、值类型的构造器代理
4、类的继承和构造过程:指定构造器和便利构造器(convenience)
类的构造器代理规则:1、指定构造器必须调用其直接父类的指定构造器。2、便利构造器必须调用同一类中定义的其他构造器。3、便利构造器必须最终导致一个指定构造器被调用。
3原则简易记法:指定构造器必须总是向上代理,便利构造器必须总是横向代理

5、两段式构造过程
2阶段:第一个阶段,每个存储型属性被引入它们的类指定一个初始值。当每个存储型属性的初始值被确定后,第二阶段开始,它给每个类一次机会,在新实例准备使用之前进一步定制它们的存储型属性。

4种有效的安全检查:1、指定构造器必须保证它所在类引入的所用属性都必须完成初始化,之后才能将其他构造任务向上代理给父类中的构造器;2、指定构造器必须先向上代理父类构造器,然后再为集成的属性设置新值。如果没有这样,指定构造器中设置的新值将被父类中的构造器所覆盖;3、便利构造器必须先代理调用同一类中的其他构造器,然后再为任意属性赋新值。如果没这么做,便利构造器赋的新值将被同一类中其他指定构造器所覆盖;4.构造器在第一阶段构造完成之前,不能调用任何实例方法,不能读取任何实例属性的值,不能引用self作为一个值。类实例在第一阶段结束以前并不是完全有效的。只有第一阶段完成后,该实例才会成为有效实例,才能访问属性和调用方法。

6、构造器的继承和重写
跟 Objective-C 中的子类不同,Swift 中的子类默认情况下不会继承父类的构造器。Swift 的这种机制可以防止一个父类的简单构造器被一个更精细的子类继承,并被错误地用来创建子类的实例

6.1 构造器的自动继承 规则1:如果子类没有定义任何指定构造器,它将自动继承所有父类的指定构造器。 规则2:如果子类提供了所有父类指定构造器的实现——无论是通过规则 1 继承过来的,还是提供了自定义实现——它将自动继承所有父类的便利构造器。 注意 对于规则 2,子类可以将父类的指定构造器实现为便利构造器。 7、可失败构造器init? 8、构造失败的传递 9、重写可失败构造器 10、可失败构造器init! 11、必要构造器 required 12、通过闭包或函数设置属性的默认值。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读