nil,NULL,NSNull,Nil区别
来源:互联网 发布:178个经典c语言源代码 编辑:程序博客网 时间:2024/06/05 18:09
1.nil
指向一个对象的指针为空 在objc.h中的定义如下所示:
#ifndef nil# if __has_feature(cxx_nullptr)# define nil nullptr# else# define nil __DARWIN_NULL# endif#endif
在Objective-C中用于id类型的对象
NSString *name = nil;NSURL *url = nil;id object = nil;
2.Nil
指向一个类的指针为空 定义如下:
#ifndef Nil# if __has_feature(cxx_nullptr)# define Nil nullptr# else# define Nil __DARWIN_NULL# endif#endif
在Objective-C中用于Class类型的对象
Class aClass = Nil;Clsss bClass = [NSURL class];
3.NULL
指向C类型的指针为空 在stddef.h中定义如下:
#if defined(__need_NULL)#undef NULL#ifdef __cplusplus# if !defined(__MINGW32__) && !defined(_MSC_VER)# define NULL __null# else# define NULL 0# endif#else# define NULL ((void*)0)#endif
多用于如下例子:
int *pInt = NULL;char *chChar <span style="white-space:pre"> </span>= NULL;struct stStruct = NULL;
4.NSNull
在Objective-C中是一个类,只是名字中有个Null,NSNull有 + (NSNull *)null; 单例方法,多用于集合(NSArray,NSDictionary)中值为空的对象
NSArray *array = [NSArray arrayWithObjects: [[NSObject alloc] init], [NSNull null], @"aaa", nil, [[NSObject alloc] init], [[NSObject alloc] init], nil];NSLog(@"%ld", array.count); // 输出 3,NSArray以nil结尾
NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys: @"Object0", @"Key0", @"Object1", @"Key1", nil, @"Key-nil" @"Object2", @"Key2", nil];NSLog(@"%@", dictionary); // 输出2个key-value,NSDictionary也是以nil结尾
NSMutableDictionary *mutableDictionary = [[NSMutableDictionary alloc] init];[mutableDictionary setObject:nil forKey:@"Key-nil"]; // 会引起Crash[mutableDictionary setObject:[NSNull null] forKey:@"Key-nil"]; // 不会引起Crash
所以在使用时,如下方法是比较安全的
[mutableDictionary setObject:(nil == value ? [NSNull null] : value) forKey:@"Key"];
0 0
- nil/Nil/NULL/NSNULL区别
- nil,NIl,NULL,NSNull区别
- nil-Nil-NULL-NSNull区别
- nil/Nil/NULL/NSNull区别
- nil,Nil,NULL,NSNull区别
- nil NULL Nil NSNull 区别
- nil,NULL,NSNull,Nil区别
- nil Nil NULL NSNull
- NSNULL nil NULL Nil
- nil Nil NULL NSNull
- nil / Nil / NULL / NSNull
- nil / Nil / NULL / NSNull
- nil / Nil / NULL / NSNull
- nil Nil NULL NSNull
- nil/Nil/NULL/NSNull
- nil/Nil/NULL/NSNull
- nil/Nil/NULL/NSNull
- nil/Nil/NULL/NSNull
- 充电桩系统需求
- jquery进度条
- OpenCV之 HOG检测子针对SVM线性核的检测
- activiti链接
- C++每日一练(new/delete)
- nil,NULL,NSNull,Nil区别
- 【cocos2d-x】运行 setup.py 闪退的解决方案
- Aidl CallBack
- iOS库-上手一个简单的.framework/.a
- springboot副本集mongoDB
- 姿态(Orientation)
- dedetemplate.class.php文件分析
- HTML练习---当当网最新上架图书列表页面
- NSKeyedArchiver 归档和回档