2013-01-19 45 views

回答

4

UPDATE


在一个可变的字符串的情况下,你必须先分配/初始化这样的:

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

也许你已经这样做了,但你必须以如下方式重置字符串:

[myMutableString setString: @""]; 

因此,不是写ng 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个对象。否则,你会如何加入它?

然而,在一个NSMutableString的情况下,你可能有实际的alloc-INIT它....有人请澄清。

显然,分配给@""是更好的,它实际上取决于您的方案虽然。我不知道你为什么要分配给nil,除非你将变量重新分配给一个新的字符串对象。他们的

+0

[@“” appendString:@“!现在,它包含一个有效的字符串”]'会抛出无法识别的选择异常 –

+0

感谢兄弟。它会工作得很好:) –

+0

@ xlc0212 **你在说什么**!?如果你认为我的意思是这样,让我重新说说我的问题。 – MCKapur

2

使用

[myMutableString setString: @""]; 

重置您的字符串。

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