NSString真的是不可变的吗?

时间:2010-08-06 22:25:53

标签: iphone objective-c

为什么当我编码时我能做到:

NSString *test;

test = @"stack";
test = @"overflow";

没有任何问题,NSString不应该是不可变的吗?

3 个答案:

答案 0 :(得分:7)

字符串对象是不可变的。您只是将指针更改为其他字符串。

答案 1 :(得分:7)

不可变的。您没有使用这些语句更改基础字符串,而是创建/使用全新的字符串。指针本身可以根据需要随时更改,但这不是字符串。

答案 2 :(得分:1)

在您的代码中,您只是“忘记”旧值(堆栈)并创建一个新的字符串实例并用“溢出”填充它......