我已经阅读了几本书......以及在线...关于不可变和可变的字符串.他们声称"不可变的字符串"无法改变.(但他们从未定义"变化".)
如果不使用NSMutableString,可以更改哪些NSStrings?
该字符串包含"鲶鱼"......后来我尝试将其更改为"cat".(相同的字母,只是更短.)
它包含"猫"......我试图将其改为"鲶鱼".(类似的开始...但只是做得更久.)
我将"猫"改为"CAT".(相同的字母,但情况已经改变.)
我把"猫"变成了"狗".(完全不同的字符串,但长度相同.)
我将"猫"改为"山茱萸".(完全不同的字符串,但更长.)
下面的代码编译并运行,但根据所有iPhone开发书籍和Apple文档它不应该!有人可以向我解释一下,不可变的NSString如何在设置后更改其值?我以为我必须使用NSMuttableString来更改相同字符串变量的上下文?我正在使用SDK 3.1.
NSString *test =[[NSString alloc] initWithString:@"TEST"];
[test release];
test = @"TEST2";
Run Code Online (Sandbox Code Playgroud) 我在网上看到,当我创建一个对象时alloc,init我必须释放它(甚至一个NSString),所以:
为什么我这样创建NSString:
NSString *prova = [[NSString alloc] init];
[prova release];
Run Code Online (Sandbox Code Playgroud)
我收到这些错误:
'release'不可用:在自动参考计数模式下不可用
和
ARC禁止"发布"的显式消息发送
在[prova release]消息上?我尝试这样做时没有错误:
NSString *prova = [[NSString alloc] init];
NSLog(@"Contenuto 0 di prova: %@", prova);
prova = @"prima prova stringa";
NSLog(@"Contenuto 1 di prova: %@", prova);
prova = @"ma cosè questo fantomatico errore";
NSLog(@"Contenuto 2 di prova: %@", prova);
Run Code Online (Sandbox Code Playgroud) immutability ×2
objective-c ×2
cocoa ×1
cocoa-touch ×1
ios5 ×1
iphone ×1
mutable ×1
nsstring ×1
xcode4.2 ×1