我在网上读到,当我使用allocinit创建对象时,必须释放它(甚至是NSString),所以:

为什么如果我这样创建NSString

NSString *prova = [[NSString alloc] init];
[prova 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);

最佳答案

这是iOS 5之前的最佳做法,如果禁用了ARC模式,则是iOS 5中的最佳做法。现在iOS 5 uses the new Apple's LLVM compiler, which introduces this ARC feature

因此,如果启用了ARC(默认情况下是ARC),则通常不再需要使用release方法。您可以在documentation中找到更多详细信息。

如果您仍然想使用旧方法,则可以在Xcode项目的“构建阶段”部分中添加标志-fno-objc-arc

09-25 17:22