为什么当我编码时我能做到:
NSString *test;
test = @"stack";
test = @"overflow";
没有任何问题,NSString
不应该是不可变的吗?
答案 0 :(得分:7)
字符串对象是不可变的。您只是将指针更改为其他字符串。
答案 1 :(得分:7)
是不可变的。您没有使用这些语句更改基础字符串,而是创建/使用全新的字符串。指针本身可以根据需要随时更改,但这不是字符串。
答案 2 :(得分:1)
在您的代码中,您只是“忘记”旧值(堆栈)并创建一个新的字符串实例并用“溢出”填充它......