我一直在寻找这里的问题,在我测试自己的一些代码以测试差异时,找不到简单的例子来指出我的区别。
据我了解,在诸如“NSString”之类的“不可变”字符串中,我无法执行任何“NSString”方法来修改字符串,例如:
NSString *s = @"cat";
s = [NSString stringWithString:@"blamp"];
NSLog(@"%@", s);
但它确实有效..
请尝试给我和其他新手一个非常简单的例子,说明什么不起作用以及为什么。tnx
我一直在寻找这里的问题,在我测试自己的一些代码以测试差异时,找不到简单的例子来指出我的区别。
据我了解,在诸如“NSString”之类的“不可变”字符串中,我无法执行任何“NSString”方法来修改字符串,例如:
NSString *s = @"cat";
s = [NSString stringWithString:@"blamp"];
NSLog(@"%@", s);
但它确实有效..
请尝试给我和其他新手一个非常简单的例子,说明什么不起作用以及为什么。tnx
该声明 :
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.