Swift中的nil与OC中ni的区别

在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则为右边的值

发布了268 篇原创文章 · 获赞 59 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/qq_18683985/article/details/102473466