我想问NSString
问题,问题是
NSString str = @"Hello";
str = [str stringByAppendingString:@"World"];
如果我们NSLog
str
我们会得到一个输出 - HelloWorld
!
所以我的问题是,如果str
是NSString
类变量,它是一个静态变量(一旦定义就无法更改)那么我们怎样才能改变它,(注意我使用了相同的NSString
对象str
)。
答案 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(无法更改),那么您将收到编译器错误。一般来说,想出这些类型的东西的最好方法是自己尝试。如果只是编写几行代码或更改关键字,那会对它造成什么影响?