我有一个字符串
NSString hi;
我不知道会初始化它的值。可能是零,可能是空字符串,可能是任何东西。
使用
有什么好处if (![hi length])
VS
if (![hi isEqualToString:@""])
似乎两种情况都为空字符串,nil和任何其他类型的字符串返回相同的值。我猜想长度更好,因为它更有效率。它只返回一个变量,而isEqualToString必须进行比较。
答案 0 :(得分:7)
他们没有做同样的事情。
对于nil或空字符串, [hi length]
将返回0,对于任何其他字符串,
[hi isEqualToString:@""]
将返回非零值。
hi
为空字符串时, hi
将返回1;当hi
为nil或任何非空字符串时,
nil
将返回0。
换句话说,两行代码给出相同结果的{{1}}的唯一值是{{1}}。
您可能想要选项#1的行为(将nil或空字符串视为“空白”,将任何其他值视为“非空白”),这样就可以使用。
答案 1 :(得分:4)
使用
有什么好处if (![hi length])
是。它可以同时检查nil
的空字符串和。您不能使用isEqualToString:
执行此操作,因为如果字符串为nil
,则发送给它的任何消息都将返回零,因此它看起来不会等于空字符串,因此需要另一张支票。
顺便说一句,为清楚起见,您应该考虑使用if (hi.length != 0)
。
答案 2 :(得分:2)
我会做以下
if (hi && ![hi isEqualToString:@""]) {
}
如果![hi isEqualToString:@""]
为hi
, nil
会让你真实。