iOS <object returned empty description> 情况

我在判断后台返回数据(是一个字符串时)老是达不到自己想要的结果,控制台po结果为<object returned empty description>  ,后面发现这不是后台返回空,而是@""字符导致,所以他有是字符串,只是是一个没有实体值得字符串

现在对比下nil,Nil,NULL,[NSNull null],@""

NSString*str1 = nil;

    NSString*str2 = Nil;

    NSString*str3 = NULL;

    NSNull*str4 = [NSNull null];  

    NSString*str5 = @"";

    NSLog(@" \r str1:%p\r str2:%p\r str3:%p\r str4:%p\r str5:%p\r", nil, NULL, Nil, [NSNull null], @"");

    NSLog(@"\r str1:%@\r str2:%@\r str3:%@\r str4:%@\r str5:%@\r", str1, str2, str3, str4, str5);

结果:


2013-05-09 16:42:00.124 Targets[674:c07]  

 str1:0x0

 str2:0x0

 str3:0x0

 str4:0x1dc2678

 str5:0x46f4

结果很明显:nil,Nil,NULL都是空,而NSNull 是一个代表空的对象,@""已经是一个字符串了,对比不一样


2013-05-09 16:42:04.717 Targets[674:c07] 

1.描述

 str1:(null)

 str2:(null)

 str3:(null)

 str4:<null>

 str5:

====================================

2.描述

Printing description of str1:

<nil>

Printing description of str2:

<nil>

Printing description of str3:

<nil>

Printing description of str4:

<null>

Printing description of str5:

<object returned empty description>


2种方式打印出来的描述不太一样啊。


可以看到 nil,Nil, NULL, 本质上是相同的 都指向0X0 地址

而 【NSNULL null】 和 @“” 应该是在常量存储区的。占用着固定地址。



经验告诉你:NSString 类型去接受一个nsnull类型的数据,很多NSString的方法都不能使用,如下:

str接收了一个nsnull

[str isEqual: @""]   //程序崩溃不能识别isEqual方法

 str.length >0 //程序又崩溃 不能识别length属性

而且,nsnull类型都无法和  @“”   、 nil  、Nil 、NULL 比较  


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值