时至今日终于可以坐下来写博客了,一直对nil、Nil、NULL和NSNull的理解很模糊,今天特来区分一下
首先说一下IOS中开发最常用的nil:
1、nil
nil表示一个空对象,用于给OC中的对象赋值。
执行下列语句:
NSLog(@"%@",nil);
printf("%p",nil);
输出结果是:(null)
0x0
由此看出nil表示一个真实的对象,有地址,且值为null
注意这样一种情况:
2、Nil
其实nil和Nil没有严格的区别,凡是能用nil的地方,都可以使用Nil,但程序员往往喜欢用nil为一个实例对象赋值,而使用Nil为一个类对象赋值
3、NULL
由于OC是C语言的一个超集,自然有别于C,NULL表示一个空指针。为C语言所用。
4、NSNull
从名字就可以看出,NSNull是一个类,查看文档可以知道,该类继承于NSObject,且只用一个类方法 + (NSNull *)null;
在程序中,如果我们想使用一个实例对象表示这样一种情况:“我们需要有这样一个容器,但这个容器里什么也没有”这是我们就可以使用NSNull表示一个值为空的对象
使用方法如下: