iOS 中空现象(nil & Nil & NULL & NSNull)

iOS 中空现象(nil & Nil & NULL & NSNull)_第1张图片
是否能编译通过?


iOS 中的空现象主要包括 nil / Nil / NULL / NSNull,具体定义以及描述可通过链接点击查看。在实际开发中,对于 Nil 除非特意设置这样的值,否则不会出现,我是从没使用过。

一、nil

在 OC 中 nil 是安全的,这是 iOS 程序员记忆在骨子里的铁律。所以每次在写代码的时候,只要是一个对象为 nil 的时候就放心了。但是要清楚的一点是,这里的安全仅仅是针对给一个 nil 指针发送消息是的安全。如果说使用 nil 访问了不该访问地方,该 crash 还是得要 crash。比如通过 nil 直接访问成员变量:

iOS 中空现象(nil & Nil & NULL & NSNull)_第2张图片
crash

在实际开发中这种情况往往会发生在 block 中,比如在 block 中做对 self 做了 weak 处理,然后通过 weakSelf 访问其成员属性,这样当 weakSelf = nil 的时候, crash 就会发生。
除此之外,比较常见的与 nil 相关的 crash 就是往一个集合 对象中添加一个 nil。
欣赏一张图:

iOS 中空现象(nil & Nil & NULL & NSNull)_第3张图片
image.png

二、NULL

在开发中,一般给一个 block 设置成空, 习惯性的就会使用这个。只要不乱设置,一般不会出现问题。

三、NSNull

这个就比较厉害一点了, 比 NSProxy 还要 光杆司令。偷偷的瞧瞧:

iOS 中空现象(nil & Nil & NULL & NSNull)_第4张图片
image.png

有什么用呢?这东西感觉就是拿来 占位置 的,比如在一个集合中的某个位置不详空着,但是也不想放实际的东西,那么就可以使用他了。
一般还会出现在后台接口返回为空的情况,所以一定要处理好这种情况,一般字典转模型的工具都会帮忙转成 nil 的。

iOS 中空现象(nil & Nil & NULL & NSNull)_第5张图片
NSNull 能接收什么样的消息

四、说点是什么吧

鲁迅说:
1、别人说你不行,没有必要千方百计的去证明什么。
2、梦里有时终须有、梦里无时莫强求,与 无关。
3、有的时候、努力也需要一个平台,不是所有人都那么厉害。有时候努力寻高人,胜过努力做好一件事。
4、只要别人看不起你,你吸一口气,别人都会说你怎么这么奇怪,尽然还吸气。

iOS 中空现象(nil & Nil & NULL & NSNull)_第6张图片
鲁迅说

你可能感兴趣的:(iOS 中空现象(nil & Nil & NULL & NSNull))