https://docs.swift.org/swift-book/GuidedTour/GuidedTour.html
1、多行注释的嵌套是你可以更快捷方便的注释代码块,即使代码块中已经有了注释
2、如果一定要使用关键字作为标识符,可以在关键字前后添加重音符号(`)
3、尽量不要使用UInt,除非你真的需要存储一个和当前平台原生字长相同的无符号整数。除了这种情况,最好使用Int,即使你要存储的值已知是非负的。统一使用Int可以提高代码的可复用性,避免不同类型数字之间的转换,并且匹配数字的类型推断。
4、Double精确度很高,至少有15位数字,而 Float 最少只有6位数字。选择哪个类型取决于你的代码需要处理的值的范围。
5、由于 Swift 是类型安全的,所以它会在编译你的代码时进行类型检查(type checks),并把不匹配的类型标记为错误。这可以让你在开发的时候尽早发现并修复错误
6、当你要处理不同类型的值时,类型检查可以帮你避免错误。然而,这并不是说你每次声明常量和变量的时候都需要显式指定类型。
如果你没有显式指定类型,Swift 会使用类型推断(type inference)来选择合适的类型
7、使用!来获取一个不存在的可选值会导致运行时错误。使用!来强制解析值之前,一定要确定可选包含一个非nil的值。
8、布尔值字面量有三个值:true、false、nil
9、swift3 中已经取消了++、--
10、闭区间运算符 1...5 值为 1, 2, 3, 4 和 5,半开区间运算符 1..<5 值为 1, 2, 3, 和 4
11、for init; condition; increment{
循环体
}
该循环方式在 Swift 3 中已经弃用
12、Swift 的字符是一个单一的字符字符串字面量,数据类型为 Character,Swift 中不能创建空的 Character(字符) 类型变量或常量
13、外部参数名 可以在局部参数名前指定外部参数名,中间以空格分隔,外部参数名用于在函数调用时传递给函数的参数
如果你提供了外部参数名,那么函数在被调用时,必须使用外部参数名
14、Swift 构造函数使用 init() 方法。
与 Objective-C 中的构造器不同,Swift 的构造器无需返回值,它们的主要任务是保证新实例在第一次使用前完成正确的初始化。
15、对于生命周期中会变为nil的实例使用弱引用。相反的,对于初始化赋值后再也不会被赋值为nil的实例,使用无主引用。
16、当闭包和捕获的实例总是互相引用时并且总是同时销毁时,将闭包内的捕获定义为无主引用。
相反的,当捕获引用有时可能会是nil时,将闭包内的捕获定义为弱引用。
如果捕获的引用绝对不会置为nil,应该用无主引用,而不是弱引用