il , Nil , NULL, [NSNull null] , @"" 详解

NSString*str1 = nil;

    NSString*str2 = Nil;

    NSString*str3 = NULL;

    NSNull*str4 = [NSNull null];  

    NSString*str5 = @"";

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

    NSLog(@"  str1:%@  str2:%@  str3:%@  str4:%@  str5:%@ ", 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

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 比较

有人说:爱上一座城,是因为城里住着某个人,能够与所爱的人在一起,连光阴都是美的。即便粗茶淡饭,修篱种田,只要有你陪伴就好。那么,找一个青山绿水的地方,寻一处幽静的茅舍,或是云水禅心的庭院,那里有晴朗的阳光和静谧的悠然,还有你明媚的笑脸。掬一捧花香在平淡的日子,握着一路相随的暖意,让爱的馨香在柴米油盐中升腾;在一杯茶的温情里,体味生活的诗意;在一碗粥的清淡中,感受生活的浪漫,每天清晨你和阳光都在,便是我的幸福。——春暖花开 《择一城终老,遇一人白首》
原文地址:https://www.cnblogs.com/-Eric-Liu/p/5564181.html