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

释放双眼,带上耳机,听听看~!
是否能编译通过?



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

一、nil

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

crash

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

image.png

二、NULL

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

三、NSNull

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

image.png

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

NSNull 能接收什么样的消息

四、说点是什么吧

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

鲁迅说

人已赞赏
iOS文章

iOS在App中打开设置中的指定模块(终)

2020-5-11 22:46:51

iOS文章

iOS没有源码的签名与打包(Python+command)

2020-5-12 0:01:55

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索