ios开发中nil,Nil,NULL,和[NSNul null]的区别
来源:互联网 发布:杨红樱笑猫日记知乎 编辑:程序博客网 时间:2024/05/14 08:32
1、nil:指向oc中对象的空指针
Nil:指向oc中类的空指针
NULL:指向其他类型的空指针,如一个c类型的内存指针
NSNull:在集合对象中,表示空值的对象
若obj为nil:
[obj message] 将返回NO,而不是NSException
若obj为NSNull:
[obj message] 将抛出异常NSException
2、
nil和NULL从字面意思来理解比较见答案,nil是一个对象,而NULL是一个值我的理解为nil是讲对象设置为空,而NULL是将基本类型设置为空的。而且我们对于nil调用方法,不会产生crash或者抛出异常。
看一下用法
NSURL *url = nil;
Class class = Nil;
int *pointerInt = NULL;
nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空。
这五个概念很容易混淆,在一些场合下他们具有同样的用法。首先解释一下“空指针”的意思,空指针是指该指针未指向一块有意义的内存区。
如int *p;int *p = NULL;
NSObject *obj1 = [[NSObject alloc]init];
NSObject *obj2 = [NSNull null];
NSObject *obj3 = [NSObjectnew];
NSObject *obj4;
NSArray *arr1 = [NSArray arrayWithObjects:obj1,obj2,obj3,obj4, nil];
NSLog(@"arr1 count:%ld",[arr1 count]);
//count: 3 因为obj=nil,在加入obj4时就结束添加对象
NSObject *obj1;
NSObject *obj2 = [[NSObject alloc]init];
NSObject *obj3 = [NSNull null];
NSObject *obj4 = [NSObjectnew];
NSArray *arr2 = [NSArray arrayWithObjects:obj1,obj2,obj3,obj4, nil];
NSLog(@"arr2 count: %ld", [arr2 count]);
//count: 0,因为obj1=nil,所以后面的对象没有添加进去
[NSNull null]通常作为占位符作用,如下:
NSObject *obj1 = [NSNull null];
NSArray *arr1 = [NSArray arrayWithObjects:@"One","Two",obj1,"Three", nil];
for(NSString *str in arr1){
NSLog(@"array object:%@",str);
}
//reslut:One、Two、、Three
NSObject *obj1 = [NSNull null];
NSArray *arr1 = [NSArray arrayWithObjects:@"One","Two",obj1,@"Three", nil];
for(NSString *str in arr1){
if(str!= [NSNull null]){
NSLog(@"array object:%@",str);
}
}
//result:One、Two、three
- ios开发中nil,Nil,NULL,和[NSNul null]的区别
- nil Nil NULL NSNul
- iOS开发 nil,Nil,NULL的区别
- iOS开发nil/Nil/NULL的区别
- IOS中nil/Nil/NULL的区别
- iOS中nil,Nil,NULL的区别
- ios中NULL nil Nil的区别
- IOS-nil,Nil和NULL的区别
- iOS开发中nil、Nil、NULL和[NSNull null]的区别
- IOS中nil、Null、Nil和NSNull的区别
- iOS中nil/Nil/NULL的区别以及[NSNull null]
- iOS中nil 、NULL、 Nil 、NULL的区别
- iOS之nil, Nil, NULL,null和NSNull的区别
- iOS开发 -- Objective-c 中 nil, Nil, NULL和NSNull的区别
- iOS中nil、Nil、NULL、NSNull 区别
- iOS中nil NULL Nil 和NSNull区别
- iOS nil, Nil, NSNull NULL的区别
- ios nil Nil Null NSNull的区别
- 使用select函数提高服务器的处理能力——客户端代码
- 未来计划&阶段性自我剖析
- Unity3D开发小技巧
- IP地址中的保留地址
- TCP-IP详解:滑动窗口(Sliding Window)
- ios开发中nil,Nil,NULL,和[NSNul null]的区别
- SQL与各种数据库
- Navicat 使用记录
- 【Java】解决计算浮点数精度问题(BigDecimal)
- 6. Eclipse RCP中的用户交互元素
- 一个数K的2至K-1进制数表示的各个数的各位数字之和的平均值
- 四,Node.js基础知识(2)
- android蓝牙的使用
- Java 邮件发送