这是一个理论问题,而不是实际问题;
假设我有两个字符串,一个普通字符串和一个可变字符串,如果我有:

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)
谢谢
如果有人想知道如何克服这个问题,这里是我用来给字符串赋值的正确代码,而不会在“消隐”之后丢失它(sostitute to prova2=prova):
prova2 = [NSString stringWithString:prova];

最佳答案

记住NSStringNSMutableString变量是指针。这意味着当您分配prova2 = prova时,您实际上正在将prova2更改为指向prova,并且您分配给prova2的值将丢失。
因此,当您将空字符串赋给prova时,两个变量都指向@""

关于objective-c - “消隐”源NSMutableString之后,NSString无法保持值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16155778/

10-10 21:13