swift-11-init、deinit、可选链、协议、元类型
一、required
二、属性观察器
三、可失败初始化器
可以用init!定义隐式解包的可失败初始化器
可失败初始化器可以调用非可失败初始化器,非可失败初始化器调用可失败初始化器需要进行解包
如果初始化器调用一个可失败初始化器导致初始化失败 ,那么整个初始化过程都失败 ,并且之后的代码都停止执行
可以用一个非可失败初始化器重写一个可失败初始化器,但反过来是不行的
二、反初始化器(deinit)
子类的deinit实现执行完毕后会调用父类的deinit
三、可选链( Optional Chaining )
上面进行强制解包可以调用,但是强制解包导致crash
字典的可选
四、协议( Protocol )
二、协议中的属性
三、static、 class
四、mutating
五、init
六、init、 init?、 init!
七、协议的继承
八、协议组合
九、CaseIterable
十、CustomStringConvertible
十一、字典和数组初始化
十二、Any、 AnyObject
十三、is、 as?、 as!、 as
as 百分百能转的
十四、X.self、 X.Type、 AnyClass 1.52
十五、元类型的应用2.12
因为 传进来的Animal.Type 可能是子类,cls.init()这里就调用的是子类的init(),确保调用子类的cls.init()调用成功,必须也要有init(),因此在class Animal { required init() {} } 申明 required 那么子类也就有init()