简单介绍一下,也没什么可深入研究的
##一、种类 1.[NSNull null] 空对象 [NSNull null]这个方法会返回NSNull的实例对象,是一个常量,不能使用release来释放。另外,NSNull的description方法会返回字符串: 如果你要实现数组中插入空元素,这样写:
[NSArray arrayWithObjects:@"1",nil,@"2", nil];
复制代码
那么数组中将只有一个元素,事与愿违;解决这样的问题我们可以使用这个空对象
[NSArray arrayWithObjects:@"1",[NSNull null],@"2", nil];
复制代码
2.NULL C语言中的空指针,本质是0,(swift中取消了NULL)
//在这个方法中最后一个参数传的是地址,所以应该使用NULL更合适,传的是空地址,而非空对象nil
[NSURLConnection sendSynchronousRequest:request
returningResponse:response error:NULL];
复制代码
3.nil OC指向空对象的指针(表示地址为0的空对象,可以给nil发消息) 4.Nil 空类,iOS API中有
##二、杂谈 我们来看一段懒加载
@property (nonatomic, strong) NSMutableDictionary *imageCache;
...
- (NSMutableDictionary *)imageCache{
if (_imageCache == nil) {
NSLog(@"未初始化的时候:----%@",_imageCache);
_imageCache = [[NSMutableDictionary alloc]init];
NSLog(@"初始化之后:----%@",_imageCache);
}
return _imageCache;
}
- (void)viewDidLoad {
...
[self.imageCache setObject:@"值" forKey:@"键"];
[self.imageCache removeAllObjects];
NSLog(@"移除所有对象之后:----%@",_imageCache);
...
}
复制代码
输出结果是:
...]未初始化的时候:----(null)
...]初始化之后:----{
}
...]移除所有对象之后:----{
}
复制代码
没有初始化的时候是空指针,移除所有对象之后输出了个大括号,是一个空字典,这段代码不仅区分了字典没有初始化为空时与字典内容为空的区别,也证明了懒加载的有效性。