iOS中的四大皆『空』([NSNull null],NULL,nil,Nil)

简单介绍一下,也没什么可深入研究的

##一、种类 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)
...]初始化之后:----{
}
...]移除所有对象之后:----{
}
复制代码

没有初始化的时候是空指针,移除所有对象之后输出了个大括号,是一个空字典,这段代码不仅区分了字典没有初始化为空时与字典内容为空的区别,也证明了懒加载的有效性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值