iOS笔记 - NULL nil Nil ...

在 Objective-C 中有很多代表「没有东西」的东西。包括:

  • NULL
  • nil
  • Nil
  • NSNull
  • NSNotFound

NULL

NULL 属于 C 语言,表示空指针。大多数情况下 nil、Nil 和NULL 可以代理使用,但是在语义上是有区别的。比如一个方法的某个参数为 (void *) 时,而不是 id 类型时,虽然可以传入 Objective-C 的对象 nil,但是传入 NULL 意义会比较清楚。在 NSTimer 的时候 userInfo 的类型是 id,这时候我们传入 nil 会比较合适。

nil

nil 表示 Objective-C 中的空对象。我们可以对 nil 对象调用任何 method,当然都不会什么反应。

Nil

Nil 表示空对象的 class。比如,当我们想判断某个 Class 是不是空的时候语义上应该用 Nil 而不是nil。(但实际上在代码层面 nil 和 Nil 是一样的)

NSNull

NSNull 是一个确实存在 Objective-C 对象。因为我们无法在 array 或者 dictionary 中插入 nil,但有时候会需要一个东西代表「没有东西」,这个时候我们可以使用[NSNull null]
在 JSON 转化成 Objective-C 对象的场景中 JSON 里面的 null 就会转成对应的 NSNull

NSNotFound

NSNotFound 表示找不到这个东西的 index。比如找 @[@1,@2,@3],需找@4就会返回 NSNotFound。其实 NSNotFound 就是整数的最大值。

你可能感兴趣的:(iOS笔记 - NULL nil Nil ...)