iOS 5 NSString版本不可用

时间:2011-11-17 09:58:34

标签: iphone ios5 xcode4.2

我在网上看到,当我使用allocinit创建对象时,我必须将其释放(即使是NSString),所以:

为什么我以这种方式创建NSString

NSString *prova = [[NSString alloc] init];
[prova release];

我收到这些错误:

  

'release'不可用:在自动引用计数模式下不可用

  

ARC禁止发布'release'

的显式消息

[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);

4 个答案:

答案 0 :(得分:5)

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

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

如果您仍想开发旧方法,可以在Xcode项目的“构建阶段”部分添加标记-fno-objc-arc

答案 1 :(得分:4)

您正在使用Apple的新ARC(自动参考计数)。 ARC是一个新的编译器函数,它在编译时自动添加保留,释放和自动释放。

有关ARC的更多信息,请查看iOS 5发布节点:http://developer.apple.com/technologies/ios5/

  

Objective-C的自动引用计数(ARC)使内存管理成为编译器的工作。通过使用新的Apple LLVM编译器启用ARC,您将永远不需要再次键入retain或release,从而大大简化了开发过程,同时减少了崩溃和内存泄漏。编译器完全了解您的对象,并在不再使用的瞬间释放每个对象,因此应用程序运行速度与以往一样快,具有可预测的平滑性能。

答案 2 :(得分:0)

在ios 5中

无需释放对象,它会自动释放您的对象。 或者用其他方法从xcode中禁用“Objective-C自动引用计数”ARC

答案 3 :(得分:0)

ARC是IOS5中的新功能,这意味着自动引用计数......您不需要在应用程序中使用arc时查看发布和所有内容。您可以在复选框中启动新项目时取消选择