【iOS-随笔】nil Nil NULL NSNull 之间的区别

【概述】


以前,对于他们的区别都是死记硬背的,这次写程序,遇了一个坑,后台返回一个字典里的字段

   zjjb = "

然后我这样取:

[[dict objectforkey:@"zjjb”] length]

结果报错:

CRASH: -[NSNull length]: unrecognized selector sent to instance

巨坑!后来找到了解决办法,就准备来总结下他们几个之间的差别

【差别总结】


概念

  • nil:指向一个对象的空指针
  • Nil:指向一个类的空指针
  • NULL:指向其他类型(如:基本类型、C类型)的空指针
  • NSNull:通常表示集合中的空值

使用举例:

NSString * string= nil;
Class class = Nil;
int *pointerInt = NULL;
[[dict objectforkey:@"zjjb”] isEqualto: [NSNull null]] 

补充:

1.为什么上面的array里面的空对象不直接用nil?

[NSNull null]通常可以作为一个数组的占位符,从而是数组的count计算准确

2.为什么需要 NSNULL?

对于像NSArray这样的类型,nil或NULL不能做为加到其中的Object,如果定义了一个NSArray,为其分配了内存,又想设置其中的内容为空,则可以用[NSNULL null]返回的对象来初始化NSArray中的内容

3.NSNULL,NULL和nil在本质上应该是一样的,NULL和nil其实就是0



——————————— 【 MadeBy 纪宝宝 】 ———————————

你可能感兴趣的:(【iOS-随笔】nil Nil NULL NSNull 之间的区别)