前言
@interface NSNull : NSObject <NSCopying, NSSecureCoding>
作为占据空间的一个空值,如用在数组或字典中占据一个没有任何值的空间。
-
NULL & nil 的区别:
nil 是 OC 的,空对象,地址指向空的对象,指针地址指向的是 NULL。
在 OC 中,可以给空对象(nil)发送任何消息,不会出现错误。
NULL 是 C 的,空地址,地址的数值是 0,是一个长整数。
表示地址是空,不能给 NULL 消息。
从 Xcode 6 开始,取消了 NULL 的智能提示,因为 Swift 中没有 NULL 的概念,只有 nil。
在 OC 中,使用 NULL 或者 nil 都不会出错,但是:从概念的角度而言,** 的参数,不想获取对应的内容,应该传入 NULL 。
[NSNull null] 就是为了向数组和字典添加空值使用的。
-
** 类型:
指针的指针,是一个很古老的 C 语言的技巧。
用处:一个方法,可以返回多个数值。
返回值,用户代号,同时还希望返回用户年龄,按照以往的套路,会新建一个 person 类。
1、NSNull 的创建
// 返回一个单例类对象
NSNull *nl = [NSNull null];
2、** 类型
- (void)demo {
int age = 0;
NSString *myTitle = nil;
[self userInfo:&age title:&myTitle];
NSLog(@"%d %@", age, myTitle);
}
- (int)userInfo:(int *)age title:(NSString **)title {
*age = 10;
*title = [NSString stringWithFormat:@"BOSS - %d", 123];
return 1;
}