我一直在寻找这里的问题而找不到简单的例子来指出我的差异,而我正在测试我自己的一些代码来测试差异化。
根据我的理解,在“NSString”之类的“不可变”字符串中,我无法预先形成任何'NSString'方法来修改字符串,例如:
NSString *s = @"cat";
s = [NSString stringWithString:@"blamp"];
NSLog(@"%@", s);
但它确实有用..
请尽量给我和其他新手一个非常简单的例子说明什么是行不通的,为什么不行。 TNX
答案 0 :(得分:2)
声明:
s = [NSString stringWithString:@"blamp"];
实际上为字符串“blamp”创建了一个新的内存位置,s
的旧地址被这个新地址替换。
并且您感觉相同的s
已更新!实际上,指针现在指向其他一些内存地址。
字符串操作意味着更改相同的字符串:就像尝试
一样NSString *s = @"cat";
[s appendString:@"s"];//tries to append to the same. this will through error.
//the above works with NSMutableString.