Xcode ARC(自动引用计数),“release不可用”

13

我第一次使用Xcode,跟着一个在线的教程操作。我按照这个教程所示做了一切事情,但是我担心它已经过时了。

我遇到的错误是:

[font_attributes release]; 

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

ARC禁止使用显式消息发送 'release'

我的Cocoa和Xcode知识有限,但我仍希望扩展我的学习。

我该如何解决ARC问题?


可能是重复的问题: https://dev59.com/Y2015IYBdhLWcg3w_Q4_ - 0x8badf00d
1
这是由于当前版本的Xcode启用了所有新项目的自动引用计数,导致的。ARC在Xcode 4.2中是新功能,旧的教程会假设您使用手动引用计数。@NJones的答案有解决方法。 - Rob Keniger
2个回答

47
NJones所提供的两个选项是处理ARC不兼容性的有效方法。但是,您还有第三种选择,即禁用ARC对于特定的文件。

将标志-fno-objc-arc应用于您的非ARC兼容编译源文件会在编译时有效地将它们标记为不兼容ARC
您可以在TargetsYour AppBuild PhasesCompile Sources下找到您的编译源文件。

4
好的!对于使用没有ARC的第三方库来构建应用程序非常有用。+1 - Germán
2
这个答案即使在2016年也是正确的。 - Andrew Kachalin
这是最好的答案! - Frak

29

你有两个选项:

1)关闭该项目的ARC。 这可以通过在项目页面中目标的“构建设置”选项卡中将'Objective-C自动引用计数'设置为NO来完成。

2)删除所有retain release autorelease NSAutoReleasePoolsretainCount调用,因为ARC会为你处理它们。除了NSAutoReleasePool外,它们已被@autorelease{}替换。

Apple已经自动化了第二个选项,看看这个问题以使用重构工具


关于选项#2,在菜单项Edit->Refactor下,有一个选项可以让XCode为您转换项目。 - Stephen Melvin
1
更简单的方法是在特定文件上删除ARC。(请参见我的答案) - Aleksander Azizi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接