iOS 中的 nil、Nil、NULL、NSNull 僵尸对象和野指针-CSDN博客
类型 | 含义 | 使用场景 | 示例 |
---|---|---|---|
nil |
表示一个指向 Objective - C 对象的空指针。在 Objective - C 和 Swift(与 Objective - C 交互时)中用于表示对象不存在。 | 当一个对象变量没有指向任何有效的对象实例时使用。例如,一个UIViewController 变量在没有初始化或者已经被释放后可以赋值为nil 。 |
Objective - C: UIViewController *viewController = nil; Swift(与 Objective - C 交互): let viewController: UIViewController? = nil |
Nil |
用于表示指向 Objective - C 类的空指针。它和nil 的区别在于nil 是用于对象实例,而Nil 是用于类本身。 |
在 Objective - C 中,当你需要一个类指针变量但没有具体指向某个类时使用。不过在实际开发中这种情况比较少见。 | Objective - C: Class someClass = Nil; |
NULL |
在 C 和 C++ 中表示空指针,在 iOS 开发中主要用于 C 语言风格的指针。当一个指针不指向任何有效的内存地址时使用。 | 一般用于 C 语言函数返回指针类型,并且没有有效返回值的情况。在 iOS 开发中,如果涉及到 C 语言库或者对底层内存操作(如 Core Foundation 中的部分函数)会用到。 | C: void *pointer = NULL; 在 iOS 开发中(Core Foundation 示例): CFStringRef string = NULL; |
NSNull |
是 Foundation 框架中的一个单例类,用于表示集合(如NSArray 、NSDictionary )中的空值。因为nil 不能直接放在集合中作为一个元素来表示 "这里有一个空值",所以使用NSNull 。 |
当需要在集合类(如数组、字典)中表示一个有效的占位符为空的值时使用。例如,一个NSDictionary 的某个键值可能是NSNull ,表示这个键对应的是一个空值而不是键不存在。 |
Objective - C: NSArray *array = @[ @"value", [NSNull null] ]; Swift: let array: [Any] = ["value", NSNull()] |