关键词mutating
1.在实例方法修改值类型(类方法是被类型本身调用的方法,实例方法是被某个类型的实例调用的方法) 2.在可变方法self赋值
关键词override重写
子类可以为继承来的实例方法、类方法、实力属性、类属性或者下标提供自己的实现,这种行为我们叫做车用写。 任何缺少override关键字的重写行为在编译时都被认定是错误的。override关键字提醒Swift编译器去检查该类的超类或父类是否有匹配重写的声明,这个检查确保我们重写的定义是正确的。
关键词final防止重写
我们把方法、属性、下标标记为final来防止被重写。 形式:final var、final func、final class func final subscript 用途: 在类扩展中对方法、属性或下标在扩展的定义中标记为final. class前用final修饰将整个类标记为final,这样的类是不可被继承的,视图继承该类会导致编译报错。
关键词super 在子类中重写父类属性、方法、下标时访问父类的方法。
super.someMethod() super.someProperty super[index]
指定构造器必须向上代理
便利构造器必须横向代理
构造器的继承和重写 Swift的子类默认不会继承父类构造器 Swift的父类构造器仅会在安全和适当的情况下才被继承。 重写父类构造器时,需要用override修饰符 evernotecid://ACC3AEB9-CFB9-402A-B338-F3CD08949EB4/appyinxiangcom/12222126/ENResource/p14978

可失败构造器:init?(){}
必要构造器:required init(){}
* guard 使用场景

* defer的使用场景

* @objc什么时候使用?
The @objc attribute makes your Swift API available in Objective-C and the Objective-C runtime.
简单说@objc就是把Swift的API(方法和属性)公开给OC和OC runtime
1.在协议中使用 optional 关键字作为前缀来定义可选要求。
2.协议和可选要求都必须带上@objc属性
3.标记 @objc 特性的协议只能被继承自 Objective-C 类的类或者 @objc 类遵循,其他类以及结构体和枚举均不能遵循这种协议