iOS中nil 、NULL、 Nil 、NSNull的区别
1.nil
Defines the id of a null instance.
定义一个实例为空, 指向 oc 中对象的空指针.
示例代码:
|
|
当对某个对象 release 的同时最好把他们赋值为 nil,这样可以确保安全性,如果不赋值 nil,可能导致程序崩溃.
|
|
2.NULL
These macros define null values for classes and instances.
NULL可以用在C语言的各种指针上,
|
|
示例代码:
|
|
在 Objective-C 里,nil 对象被设计来跟 NULL 空指针关联的。他们的区别就是 nil 是一个对象,而 NULL 一个值。而且我们对于 nil 调用方法,不会产生 crash 或者抛出异常。
3.Nil
Defines the id of a null class.
定义一个空的类
Available in Mac OS X v10.0 through Mac OS X v10.4. Declared in NSObjCRuntime.h. Declared Inobjc.h
示例代码:
|
|
4.NSNull
The NSNull class defines a singleton object used to represent null values in collection objects (which don’t allow nil values).
NSNull 类定义了一个单例对象用于表示集合对象的空值。
集合对象无法包含 nil 作为其具体值,如 NSArray、NSSet 和 NSDictionary。
相应地,nil 值用一个特定的对象 NSNull 来表示。NSNull 提供了一个单一实例用于表示对象属性中的的 nil 值。
默认的实现方法中,dictionaryWithValuesForKeys:
和setValuesForKeysWithDictionary:
自动地将 NSNull 和 nil 相互转换,因此您的对象不需要进行 NSNull 的测试操作。