A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 笑声不断 中级黑马   /  2016-1-14 15:56  /  915 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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];

4 个回复

倒序浏览
总结的好啊
回复 使用道具 举报
guyuexing 来自手机 中级黑马 2016-1-14 19:56:06
藤椅
学习学习学习
回复 使用道具 举报
这个要顶一下的
回复 使用道具 举报
学习了   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马