在OC中.nil一般表示为空值,这么说可能比较难理解,也可以说是指向一个不存在对象的指针.向nil发送消息不崩溃的原因是objc_msgsend()内部的处理.PS:有一次被问到为什么array越界会崩溃…当时想的比较肤浅,其实是因为越界之后可能访问,修改了其他空间的值,造成了不安全.
言归正传,Swift中的nil的概念和OC不太一样,Swift中的nil表示的是一个确定的值.任何类型的可选状态都可以被设置为nil.如果不是可选值,就不能设置为nil.(不止是对象类型)
可选值的判断
var isTure: bool?
1. if判断
if isTure != nil {
/// 逻辑代码
}
2. 可选绑定
if let xxx = isTure {
/// 执行逻辑代码
}
3. 合并空值运算符"??"
(isTure ?? false)
如果isTure不为nil则为isTure解包的值.如果为nil则为右边的值