nil、Nil、NULL、NSNull的区别
来源:互联网 发布:淘宝官方活动报名 编辑:程序博客网 时间:2024/06/04 18:25
nil、Nil、NULL、NSNull的区别
nil:指向一个对象的空指针,对objective c id 对象赋空值.
Nil:指向一个类的空指针,表示对类进行赋空值.
NULL:指向其他类型(如:基本类型、C类型)的空指针, 用于对非对象指针赋空值.
NSNull:在集合对象中,表示空值的对象.
- 1.nil 在指向一个对象的指针为空 定义如下:
#ifndef nil# if __has_feature(cxx_nullptr)# define nil nullptr# else# define nil __DARWIN_NULL# endif#endif
在Objective-C中用于id类型的对象
NSString *str = 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 Class1 = Nil;Clsss Class2 = [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 *intA = NULL;char *charC = NULL;struct structStr = NULL;
4.NSNull在Objective-C中是一个类.
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"];
文/Jasomzld
原文链接:点我坐飞机
0 0
- 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 之间的区别
- 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/Nil/NULL/NSNull的区别
- NSNull nil NULL Nil的区别
- nil/Nil/NULL/NSNull的区别
- 理解HttpMessageConverter,@ResponseBody
- sapui5 访问OData数据
- hdu 1251 入门trie树
- 微软实习笔试题
- utf8-to-utf8mb4 mysql支持全部unicode
- nil、Nil、NULL、NSNull的区别
- rsyslogd: error during parsing file /etc/rsyslog.conf, on or before line 55: warnings occured in fil
- zookeeper运维
- 1019. General Palindromic Number (20)-PAT甲级真题
- Object-c 不错的视频教程
- Guest OS, Qemu, KVM工作流程
- AIDL的Proxy-Stub理解:(以实际媒体播放器服务单独运行在一个进程中为例)
- 短信验证具体步骤
- UITableViewCell 的Image设置了UIViewContentModeScaleAspectFill后图片超出去了