1

我有一个字符串

NSString hi;

而且我不知道将初始化哪些值。可以是 nil,可以是空字符串,可以是任何东西。

使用有什么好处吗

if (![hi length])

对比

if (![hi isEqualToString:@""])

似乎这两种情况都为空字符串、nil 和任何其他类型的字符串返回相同的值。我猜长度更好,因为它更有效。它只返回一个变量,其中 isEqualToString 必须进行比较。

4

3 回答 3

7

他们不做同样的事情。

[hi length]将为 nil 或空字符串返回 0,为任何其他字符串返回非零。

[hi isEqualToString:@""]当为空字符串时将返回 1,当为 nil 或任何非空字符串时将返回hi0 。hi

换句话说,hi两行代码给出相同结果的唯一值是nil.

您可能想要选项 #1 的行为(将 nil 或空字符串视为“空白”,将任何其他值视为“非空白”),所以这就是要使用的。

于 2012-11-21T20:19:03.883 回答
4

使用有什么好处吗if (![hi length])

是的。它可以同时检查空字符串a nil。您不能使用 来执行此操作isEqualToString:,因为如果字符串是nil,那么发送给它的任何消息都将返回零,因此它看起来不等于空字符串,因此需要再次检查。

顺便说一下,为了清楚起见,您应该考虑使用if (hi.length != 0).

于 2012-11-21T20:19:38.040 回答
2

我会做以下事情

if (hi && ![hi isEqualToString:@""]) {

}

![hi isEqualToString:@""]hi如果是的话,独自一人会让你得到一个真实的nil

于 2012-11-21T20:26:02.533 回答