这是一个比实际问题更理论的问题;
假设我有两个字符串,一个是正常的,一个是可变的,如果我这样做:
NSMutableString *prova = [[NSMutableString alloc] init];
NSString *prova2 = [[NSString alloc] init];
[prova appendFormat:@"%@",@"CIAO"];
prova2 = prova;
NSLog(@"String: %@",prova);
NSLog(@"String2: %@",prova2);
[prova setString:@""];
NSLog(@"-String: %@",prova);
NSLog(@"-String2: %@",prova2);
那么结果是:
2013-04-22 22:01:53.604 CodeTest[6974:303] String: CIAO
2013-04-22 22:01:53.605 CodeTest[6974:303] String2: CIAO
2013-04-22 22:01:53.605 CodeTest[6974:303] -String:
2013-04-22 22:01:53.606 CodeTest[6974:303] -String2:
为什么它会这样?我只是想找出答案,因为我以前在使用 python、php 或 C++ 编程时从未遇到过这样的事情(我想我从未遇到过像 Obj-c 中这么多不同的数据类型:P)
谢谢
以防万一有人想知道如何在这里克服它是我用来将值分配给字符串而不在“消隐”之后丢失它的正确代码(代替prova2 = prova):
prova2 = [NSString stringWithString:prova];