stringByAppendingString在同一个对象上

时间:2014-07-27 18:11:09

标签: objective-c

我想问NSString问题,问题是

NSString str = @"Hello";
str = [str stringByAppendingString:@"World"];

如果我们NSLog str我们会得到一个输出 - HelloWorld

所以我的问题是,如果strNSString类变量,它是一个静态变量(一旦定义就无法更改)那么我们怎样才能改变它,(注意我使用了相同的NSString对象str)。

2 个答案:

答案 0 :(得分:1)

您尚未将字符串声明为静态字符串,但NSString是不可变的。您正在创建一个新字符串并替换str。许多Obj-C类都有一个可变类型,所以如果你想修改你的字符串,就像在这个例子中一样,你可能想要更像这样的东西:

NSMutableString *str = [NSMutableString stringWithString:@"Hello"];
[str appendString:@" World"];

注意,@“Hello”是NSString,因此尝试使用该语法初始化NSMutableString会导致错误。

答案 1 :(得分:0)

实际上,静态变量一旦定义就可以更改。在所有函数/实例调用中简单地维护静态变量。您可以在static variables in Objective-C - what do they do?找到更详细的说明。所以结果会是一样的。如果变量被定义为const(无法更改),那么您将收到编译器错误。一般来说,想出这些类型的东西的最好方法是自己尝试。如果只是编写几行代码或更改关键字,那会对它造成什么影响?