0

我想知道nil@""in之间的区别NSMutableString

我需要NSMutableString每秒清理一次字符串值。

所以

myMutableString = nil;

或者

myMutableString = @"";

哪一个更好清洁,为什么?

4

2 回答 2

4

更新


在可变字符串的情况下,您必须先分配/初始化它,如下所示:

NSMutableString *myMutableString = [[NSMutableString alloc] init];

也许您已经这样做了,但是您必须像这样重置字符串:

[myMutableString setString: @""];

因此,不要编写myMutableString = @"",而是使用上面的代码。


如果您分配myMutableStringnil它不是有效的指针/对象,并且无法响应消息或操作。如果你真的把它设置为@"",它是一个可以响应消息、方法和动作的完全有效的对象,它只是包含一个长度为 0 的字符串。

myMutableString = nil;

[myMutableString appendString: @"It now contains a valid string!"]; 

这不可能发生,因为字符串是nil

myMutableString = @""; 

[myMutableString appendString: @"It now contains a valid string!"]; 

这可能发生,myMutableString是一个有效的对象并且可以响应消息。你猜怎么着,它现在有一个字符串!

所以,一个字符串对象仍然可以被初始化并且有一个没有任何字符的实际字符串值。就像一个数组可以是有效的并且里面有 0 个对象一样。不然怎么加!?

但是,在 anNSMutableString的情况下,您可能必须实际分配初始化它....有人请澄清。

显然,分配给@""更好,但这实际上取决于您的情况。我不知道您为什么要分配给nil,除非您将变量重新分配给新的字符串对象。

于 2013-01-19T09:58:55.097 回答
2

他们都没有

采用

[myMutableString setString: @""];

重置你的字符串。

您的对象保持不变。您调用一个清除其内容的方法。

于 2013-01-19T10:07:28.573 回答