nil、Nil、NULL和NSNull的区别及使用.pdf

nil、Nil、NULL和NSNull的区别及使用.pdf

ID:57307181

大小:225.00 KB

页数:9页

时间:2020-08-11

nil、Nil、NULL和NSNull的区别及使用.pdf_第1页
nil、Nil、NULL和NSNull的区别及使用.pdf_第2页
nil、Nil、NULL和NSNull的区别及使用.pdf_第3页
nil、Nil、NULL和NSNull的区别及使用.pdf_第4页
nil、Nil、NULL和NSNull的区别及使用.pdf_第5页
资源描述:

《nil、Nil、NULL和NSNull的区别及使用.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、⼀、简介初学iOS,⾥⾯的nil,Nil,NULL及NSNull把我搞得有点晕。今天把他们归纳总结⼀下。⼆、概念nil:指向oc中对象的空指针Nil:指向oc中类的空指针NULL:指向其他类型的空指针,如⼀个c类型的内存指针NSNull:在集合对象中,表⽰空值的对象若obj为nil:[objmessage]将返回NO,⽽不是NSException若obj为NSNull:[objmessage]将抛出异常NSException三、理解nil和NULL从字⾯意思来理解⽐较简单,nil是⼀个对象,⽽NULL是⼀个值,

2、我的理解为nil是将对象设置为空,⽽NULL是将基本类型设置为空的。⽽且我们对于nil调⽤⽅法,不会产⽣crash或者抛出异常。看⼀下⽤法NSURL*url=nil;Classclass=Nil;int*pointerInt=NULL;nil是⼀个对象指针为空,Nil是⼀个类指针为空,NULL是基本数据类型为空。这五个概念很容易混淆,在⼀些场合下他们具有同样的⽤法。⾸先解释⼀下“空指针”意思,空指针是指该指针未指向⼀块有意义的内存区。如int*p;int*p=NULL;NSObject*obj1=[[NSObj

3、ectalloc]init];NSObject*obj2=[NSNullnull];NSObject*obj3=[NSObjectnew];NSObject*obj4;NSArray*arr1=[NSArrayarrayWithObjects:obj1,obj2,obj3,obj4,nil];NSLog(@"arr1count:%ld",[arr1count]);//count:3因为obj=nil,在加⼊obj4时就结束添加对象NSObject*obj1;NSObject*obj2=[[NSObjectall

4、oc]init];NSObject*obj3=[NSNullnull];NSObject*obj4=[NSObjectnew];NSArray*arr2=[NSArrayarrayWithObjects:obj1,obj2,obj3,obj4,nil];NSLog(@"arr2count:%ld",[arr2count]);//count:0,因为obj1=nil,所以后⾯的对象没有添加进去[NSNullnull]通常作为占位符作⽤,如下:NSObject*obj1=[NSNullnull];NSArray*a

5、rr1=[NSArrayarrayWithObjects:@"One",@"TWO",obj1,@"three",nil];for(NSString*strinarr1){NSLog(@"arrayobject:%@",str);}//result:One、Two、、threeNSObject*obj1=[NSNullnull];NSArray*arr1=[NSArrayarrayWithObjects:@"One",@"TWO",obj1,@"three",nil];for(NSString*strinarr

6、1){if(str!=[NSNullnull]){NSLog(@"arrayobject:%@",str);}}//result:One、Two、three四、使⽤定义1)nil指向⼀个对象的指针为空在objc.h中的定义如下所⽰:#ifndefnil#if__has_feature(cxx_nullptr)#definenilnullptr#else#definenil__DARWIN_NULL#endif#endif在Objective-C中⽤于id类型的对象NSString*name=nil;NSURL*ur

7、l=nil;idobject=nil;2)Nil指向⼀个类的指针为空定义如下:#ifndefNil#if__has_feature(cxx_nullptr)#defineNilnullptr#else#defineNil__DARWIN_NULL#endif#endif在Objective-C中⽤于Class类型的对象ClassaClass=Nil;ClsssbClass=[NSURLclass];3)NULL指向C类型的指针为空在stddef.h中定义如下:#ifdefined(__need_NULL)#undef

8、NULL#ifdef__cplusplus#if!defined(__MINGW32__)&&!defined(_MSC_VER)#defineNULL__null#else#defineNULL0#endif#else#defineNULL((void*)0)#endif多⽤于如下例⼦:int*pInt=NULL;char*chChar=NULL;structstStruct=NULL;4)N

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。