iOS 中的空现象主要包括 nil / Nil / NULL / NSNull,具体定义以及描述可通过链接点击查看。在实际开发中,对于 Nil
除非特意设置这样的值,否则不会出现,我是从没使用过。
一、nil
在 OC 中 nil 是安全的,这是 iOS 程序员记忆在骨子里的铁律。所以每次在写代码的时候,只要是一个对象为 nil 的时候就放心了。但是要清楚的一点是,这里的安全仅仅是针对给一个 nil 指针发送消息是的安全。如果说使用 nil 访问了不该访问地方,该 crash 还是得要 crash。比如通过 nil
直接访问成员变量:
在实际开发中这种情况往往会发生在 block
中,比如在 block 中做对 self 做了 weak 处理,然后通过 weakSelf 访问其成员属性,这样当 weakSelf = nil
的时候, crash 就会发生。
除此之外,比较常见的与 nil
相关的 crash 就是往一个集合 对象中添加一个 nil。
欣赏一张图:
二、NULL
在开发中,一般给一个 block
设置成空, 习惯性的就会使用这个。只要不乱设置,一般不会出现问题。
三、NSNull
这个就比较厉害一点了, 比 NSProxy
还要 光杆司令。偷偷的瞧瞧:
有什么用呢?这东西感觉就是拿来
占位置
的,比如在一个集合中的某个位置不详空着,但是也不想放实际的东西,那么就可以使用他了。一般还会出现在后台接口返回为空的情况,所以一定要处理好这种情况,一般字典转模型的工具都会帮忙转成
nil
的。
四、说点是什么吧
鲁迅说:
1、别人说你不行,没有必要千方百计的去证明什么。
2、梦里有时终须有、梦里无时莫强求,与 命
无关。
3、有的时候、努力也需要一个平台,不是所有人都那么厉害。有时候努力寻高人,胜过努力做好一件事。
4、只要别人看不起你,你吸一口气,别人都会说你怎么这么奇怪,尽然还吸气。