override 重写父类的方法 子类继承父类的方法的时候要在方法的前面加上这个关键字 方法的实现会在父类的 方法中查找有没有这个方法的实现 如果没有 会报错
final 在类(class)前加上这个参数的时候 表示这个类不能够被继承
mutating 关键字用来标记一个会修改 结构体 的方法 在 类中 不需要标记任何方法 因为类中的方法通常可以修改类属性
extension (扩展) 用来为现有的类型添加功能 例如新的方法和计算属性
defer 使用defer代码块来表示在函数返回前 函数中最后执行的代码 无论函数时候会抛出错误 这段代码都会执行
使用defer 可以把函数调用之初就要执行的代码和函数调用结束时调用的扫尾代码写在一起 虽然这两者执 行的时机截然不同。
typealias 用来定义一个类型别名 可以给现有的类型起一个更有意义的名字 typealias theNewInt =Int
访问控制
swift3.0以前有三种访问控制关键字 分别是 private、internal、public。3.0以后又在原来的基础上增加了两种
访问控制的关键字 分别是fileprivate、open
private 访问级别所修饰的属性或者方法只能在当前的类中访问
fileprivate 访问级别所修饰的属性或者方法在当前的Swift源文件里可以访问
internal 为默认的访问级别,可以默认不写。 internal访问级别所修饰的属性或者方法在源文件所在的整个模块都可以访问。如果是框架或者库代码,则在整个框架内部都将可以访问 框架由外部代码所引用时,则不可以访问,如果是App代码 在整个App代码 也是在整个App内部都可以访问
public 可以被任何人访问。但其他module(模块)中不可以被override和继承,而在module内部可以被override和继承
open swift 3.0之后新加的关键字 可以被任何人使用 包括override和继承
从高到低的权限控制顺序如下
open > public > internal > fileprivate > private