0

我一直在寻找这里的问题,在我测试自己的一些代码以测试差异时,找不到简单的例子来指出我的区别。

据我了解,在诸如“NSString”之类的“不可变”字符串中,我无法执行任何“NSString”方法来修改字符串,例如:

NSString *s = @"cat";

    s = [NSString stringWithString:@"blamp"];

    NSLog(@"%@", s);

但它确实有效..

请尝试给我和其他新手一个非常简单的例子,说明什么不起作用以及为什么。tnx

4

1 回答 1

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.
于 2013-03-03T16:56:39.137 回答