iOS相关 | Swift相关的注意点
一、swift基本使用
1.1 常量和变量
let 定义常量,一经赋值不允许再修改
var 定义变量,赋值之后仍然可以修改
注意:
1.应该尽量先选择常量,只有在必须修改时,才需要修改为 var
2.在 Xcode 7.0 中,如果没有修改变量,Xcode 会提示修改为 let
1.2 可选项Optional
1) 定义变量时,如果指定是可选的,表示该变量可以有一个指定类型的值,也可以是 nil
2) 定义变量时,在类型后面添加一个 ?,表示该变量是可选的
3) 变量可选项的默认值是 nil
4) 常量可选项没有默认值,主要用于在构造函数中给常量设置初始数值
5) 如果 Optional 值是 nil,不允许参与计算,只有解包(unwrap)后才能参与计算,在变量后添加一个 !,可以强行解包
注意:必须要确保解包后的值不是 nil,否则会报错
6) ?? 运算符可以用于判断 变量/常量 的数值是否是 nil,如果是则使用后面的值替代
在使用 Swift 开发时,?? 能够简化代码的编写
例:
let = "\(str ?? "")" + "...." //如果str为nil时赋值为"" ,如果不为nil时取str
1.3 控制流
guard:guard 是与 if let 相反的语法,Swift 2.0 推出的.使用 guard 的好处:能够判断每一个值;在真正的代码逻辑部分,省略了一层嵌套
二、闭包
闭包(Block) 的循环引用小结
Swift
[weak self]
self是可选项,如果self已经被释放,则为nil
[unowned self]
self不是可选项,如果self已经被释放,则出现野指针访问
Objc
__weak typeof(self) weakSelf;
如果self已经被释放,则为nil
__unsafe_unretained typeof(self) weakSelf;
如果self已经被释放,则出现野指针访问