iOS中nil,NULL,Nil,NSNull的区别

最近心情不太好,往往心情不太好的时候喜欢学点东西,写点东西,具体因为什么心情不太好在这里就不给大家爆料了哦!

言归正传:

1、nil定义一个实例为空, 指向oc中对象的空指针.

注意:当release一个对象的同时将该对象赋值为nil,这样确保安全性.

2、NULL在C语言中常用来表示一个空值.

注意:在Objective-C里,nil对象被设计来跟NULL空指针关联的。他们的区别就是nil是一个对象,而NULL只是一个值。而且我们对于nil调用方法,不会产生crash或者抛出异常.

3、Nil用来定义一个空的类

例如:Class someClass = Nil;

4、NSNull类定义了一个单例对象用于表示集合对象的空值.

注意:集合对象无法包含nil作为其具体值,如NSArray、NSSet和NSDictionary。相应地,nil值用一个特定的对象NSNull来表示。NSNull提供了一个单一实例用于表示对象属性中的的nil值。默认的实现方法中,dictionaryWithValuesForKeys:和setValuesForKeysWithDictionary:自动地将NSNull和nil相互转换,因此您的对象不需要进行NSNull的测试操作.

原文地址:https://www.cnblogs.com/zhaoguowen/p/4143417.html