1、可选类型。
1.转义特殊字符 \0 (空字符)、\\(反斜线)、\t (水平制表符)、\n (换行符)、\r (回车符)、\" (双 引号)、\' (单引号)。
2.单字节 Unicode 标量,写成 \xnn,其中 nn 为两位十六进制数。
3.双字节 Unicode 标量,写成 \unnnn,其中 nnnn 为四位十六进制数。
4.四字节 Unicode 标量,写成 \Unnnnnnnn,其中 nnnnnnnn 为八位十六进制数。
5、注意:结构体总是通过被复制的方式在代码中传递,因此请不要使用引用计数。
结构体实例总是通过值传递,类实例总是通过引用传递。
计算属性可以用于类、结构体和枚举里,存储属性只 能用于类和结构体。
属于引用类型的类(class)则不一样,把一个引用类型的实例赋给一个常量后,仍然可以 修 |
改实例的变量属性。 |
因为类是引用类型,有可能有多个常量和变量在后台同时引用某一个类实例。(对于结构体 和枚举来说,这并不成立。因为它们作值类型,在被赋予到常量,变量或者传递到函数 |
时,总是会被拷贝。) |
除存储属性外,类、结构体和枚举可以定义计算属性,计算属性不直接存储值,而是提供 一 |
个 getter 来获取值,一个可选的 setter 来间接设置其他属性或变量的值。 |
8、
结构体和枚举能够定义方法是 Swift 与 C/Objective-C 的主要区别之一。
9、
具体来说,Swift 默认仅给方法的第一个参数名称一个局部参数名称;默认同时给第二个和后 续的参数名称局部参数名称和外部参数名称
10、
声明类的类型方法,在方法的 func 关键字之前加上关键字 class;声明结构 体和枚举的类型方法,在方法的 func 关键字之前加上关键字 static。
11、
类和结构体在实例创建时,必须为所有存储型属性设置合适的初始值。存储型属性的值不
能处于一个未知的状态。
12、
对于生命周期中引用会变为 nil 的实例,使用弱引用;对于初始化时赋值之后引用再也不会
赋值为 nil 的实例,使用无主引用。
13、
注意:扩展可以添加新的计算属性,但是不可以添加存储属性,也不可以向已有属性添加属 性观测器(property observers)。
14、
协议方法支持变长参数(variadic parameter),不支持默认参数(default parameter)。
15、委托模式的实现很简单: 定义协议来封装那些需要被委托的函数和方法, 使其遵循者拥有 这些被委托的函数和方法。
可选协议只能在含有@objc 前缀的协议中生效。且@objc 的协议只能被类遵循。
17、
可以对类型的实例使用dynamicType 表达式来获取该实例在运行阶段的类型