NULL 、nil、 Nil 、[NSNull null] 、@"" 整理

本文详细介绍了Objective-C中处理空值的各种方式,包括NULL、nil、Nil和NSNull的区别及应用,展示了如何在代码中正确地使用这些空值表示。

以上是原来在网上找到的,介绍的很不错。

(1)NULL<--->0x0  空的基本类型,基本类型的指针指向为空
  int *a = NULL;
  NSLog(@"%p",a);//0x0
(2)nil<--->(null)  空的对象,对象的指针指向为空
  NSString *str = nil;
  NSLog(@"%@",str);//(null)
(3)Nil<--->(null)  空的类,类的指针指向为空
  Class someClass = [NSString class];
  someClass = Nil;
  NSLog(@"%@",someClass);//(null)
(4)[NSNull null]<---> <null> 集合对象无法包含nil作为其具体值,nil值用一个特定的对象NSNull来表示
  NSArray *arr = @[@"1",[NSNull null],@"3"];
  NSLog(@"%@",arr);/*
                    (
                    1,
                    "<null>",
                    3
                    )
                    */
    
  if ([NSNull null] == arr[1]) {
      NSLog(@"空");
  }else{
      NSLog(@"有");
  }//空
(5)@“” 对象存在,只是没有内容
  NSString *str1 = @"";
  NSLog(@"1%@2",str1);//12
    
(6)比较
  NSLog(@"NULL == %p  Nil == %p  nil == %p [NSNull null] == %p",NULL,Nil,nil,[NSNull null]);//NULL == 0x0  Nil == 0x0  nil == 0x0 [NSNull null] == 0xbce6c8
    
  if (NULL == nil && Nil == nil && NULL == Nil) {
      NSLog(@"相同");
  }else{
      NSLog(@"不相同");//Code will never be executed(代码永远不会被执行)
  }//相同
(7)关于[NSNull null]的赋值
  NSArray *arr11 = @[@"123",[NSNull null],@"456"];
  NSArray *arr22 = [NSArray arrayWithArray:arr11];
  NSLog(@"arr11 == %@  arr22 == %@",arr11,arr22);/*                                                 

arr11 == (
                                                    123,
                                                    "<null>",
                                                    456
                                                    )  
arr22 == (
                                                    123,
                                                    "<null>",
                                                    456
                                                    )
                                                    */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值