黑马程序员技术交流社区

标题: nil、Nil、NULL、NSNull的区别 [打印本页]

作者: 笑声不断    时间: 2016-1-14 15:56
标题: nil、Nil、NULL、NSNull的区别
nil、Nil、NULL、NSNull一直了解,但是一直忘,所以今天总结下。
我的理解中他们重要的区别在于能够符值给不同的对象,类,c,或者集合。
例如:1、nil一般是符值给对象。
           2、Nil一般符值给类。
            3、NULL一般符值给其他类型(如:基本类型、C类型)的空指针
            4、NSNull通常表示集合中的空值
这些符值能够是对应的指针称为空指针,防止野指针错误导致程序崩
为什么上面的array里面的空对象不直接用nil?
如果用nil,就会变成NSArray *array = [NSArray arrayWithObjects:[[NSObject alloc] init], nil,  [[NSObject alloc] init], [[NSObject alloc] init], nil];,那么数组到第二个位置就会结束。打印[array count]的话会显示1而不是4
所以[NSNull null]通常可以作为一个数组的占位符,从而是数组的count计算准确。
Dog *dog = nil;
Class class = Nil;
int *p = NULL;
NSArray *array = [NSArray arrayWithObjects:[[NSObject alloc] init], [NSNull null], [[NSObject alloc] init], [[NSObject alloc] init], nil];
作者: 364827317    时间: 2016-1-14 16:36
总结的好啊
作者: guyuexing    时间: 2016-1-14 19:56
学习学习学习
作者: 木叶    时间: 2016-1-14 21:15
这个要顶一下的
作者: 小ㄟMò    时间: 2016-1-14 22:54
学习了   




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2