为什么字符串长度为6?

时间:2015-01-29 03:20:42

标签: objective-c nsstring stringwithformat

NSString *str = nil;
NSLog(@"str = %@",str);
NSLog(@"str.length = %u",str.length);

NSString *str2 = [NSString stringWithFormat:@"%@",str];
NSLog(@"str2 = %@",str2);
NSLog(@"str2.length = %u",str2.length);

NSLog信息是:

str = (null)
str.length = 0
str2 = (null)
str2.length = 6

str2.length = 6让我困惑,为什么?

1 个答案:

答案 0 :(得分:5)

这看起来确实令人困惑。这样做的原因很简单:当你致电[NSString stringWithFormat:@"%@", str];并为nil传递str时,你会得到一个按字面意思拼写的字符串

"(null)"

报价是为了清晰起见,它们不是字符串的一部分。如您所见,该字符串恰好有六个字符。