我在网上看到,当我使用alloc
和init
创建对象时,我必须将其释放(即使是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);
答案 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)
无需释放对象,它会自动释放您的对象。 或者用其他方法从xcode中禁用“Objective-C自动引用计数”ARC
答案 3 :(得分:0)
ARC是IOS5中的新功能,这意味着自动引用计数......您不需要在应用程序中使用arc时查看发布和所有内容。您可以在复选框中启动新项目时取消选择