nil、NULL和NSNull 的使用
来源:互联网 发布:mac口红日本价格多少 编辑:程序博客网 时间:2024/05/11 23:08
一、区别
1. nil: 是一个对象值;
2. Null: 是一个通用指针(泛型指针);
3. NSNull: 是一个对象,用在不能使用nil的场合中;因为在NSArray和NSDictionary中nil中有特殊的含义(表示列表结束),所以不能在集合中放入nil值。如要确实需要存储一个表示“什么都没有”的值,可以使用NSNull类。NSNull只有一个方法:
+ (NSNull *)null;
总之:nil是用来给对象赋值(oc任何对象都属于id类型),NULL则给任何指针赋值,NULL不能与nil进行互换,nil用于类指针赋值(在oc中类是一个对象,是类的meta-class实例),而NSNull则用于集合操作,虽然他们表示的都是空值,但使用的场合完全不同,所以要求辨明之间的区别,用于适当的场合。
4. 实例
id object = nil; // 判断对象不为空 if (object) { } // 判断对象为空 if (object == nil) { }数组初始化,空值结束
NSArray *array = [[NSArray alloc] initWithObjects:@"First", @"Second", nil];判断数组元素是否为空
NSString *element = [array objectAtIndex:2]; if ((NSNull *)element == [NSNull null]) { }
void null1() { // NSNull null返回的是一个单例对象 NSNull *nu = [NSNull null]; NSNull *nu2 = [NSNull null]; NSNull *nu3 = [NSNull null]; NSLog(@"%i", nu == nu2); NSLog(@"%i", nu2 == nu3); }二、继续探究
1. nil: 一般赋值给空对象;
2. NULL: 一般赋值给nil以外的空对象,如SEL等;
3. NSNull: 只有一个方法,[NSNull null]用来在NSArray和NSDictionary中加入非nil(表示列表结束)的空值. [NSNull null]是一个对象,他用在不能使用nil的场合;
4. 当向nil发送消息时,返回NO,不会有异常,程序将继续执行下去;
而向NSNull的对象发送消息时会收到异常,
这是因为NSArray 与 NSDictionary 中nil有特殊的含义(表示列表结束)。所以不能在集合中放入nil值。如果确实需要存储一个“表示什么都没有”的值,可以使用NSNull类。
5. nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空。
6.
- ios nil、NULL和NSNull 的使用
- ios nil、NULL和NSNull 的使用
- ios nil、NULL和NSNull 的使用
- ios nil、NULL和NSNull 的使用
- ios nil、NULL和NSNull 的使用
- ios nil、NULL和NSNull 的使用
- ios nil、NULL和NSNull 的使用
- ios nil、NULL和NSNull 的使用
- ios nil、NULL和NSNull 的使用
- ios nil、NULL和NSNull 的使用
- ios nil、NULL和NSNull 的使用
- ios nil、NULL和NSNull 的使用
- ios nil、NULL和NSNull 的使用
- ios nil、NULL和NSNull 的使用
- ios nil、NULL和NSNull 的使用
- iOS nil、NULL和NSNull 的使用
- ios nil、NULL和NSNull 的使用
- nil、NULL和NSNull 的使用
- POJ_1961 Period(KMP)
- 作为码农,我们为什么要写作
- aauto学习系列之<11>类
- Linux中的likely()和unlikely()
- iOS安装svn
- nil、NULL和NSNull 的使用
- hdu 5288 思维技巧
- 凸包,旋转卡壳模板
- c++中static总结
- MAC环境下生成Apple证书教程
- Windows Server 2003 终止服务后的一个月,想它想它想它...
- 鼠标移上去出现显示层,并且出现在同一个div中
- [242] Valid Anagram
- AC自动机模板(数组实现版)