1

我有一个项目已经过渡到ARC. 现在我正在尝试包含来自另一个项目的现有文件,该文件没有使用 ARC,我希望它也符合 ARC:release-retains,[super dealloc]s 从这个文件中消失,快速修复,其他东西“转换为 Objective-C ARC ...”可以。

问题是我不能为此使用该Edit->Refactor->"Convert to Objective-C ARC..."工具。如果我在“选择要转换的目标”屏幕中仅选择此文件,我将收到“无法转换为 Objective-C ARC”消息,因为以下错误:"@synthesize of 'weak'属性仅在 ARC 或 GC 模式下允许。但它们已经在 ARC 中确实是模式!还有许多警告:“方法可能缺少[super dealloc]呼叫”

如果我在转换时选择了除标有 -fno-objc-arc 之外的所有文件,我只会收到有关弱属性的错误。

当然,我可以手动构建和删除发布保留,但是如果有公共汽车(转换工具)为什么要走路......那么我可以将单独的文件自动转换到 ARC 吗?

更新:我不希望使用 -fno-objc-arc 标志关闭此文件的 ARC,我希望在此文件中使用 ARC。

4

2 回答 2

1

如果您坚持让 Xcode 完成工作,请创建一个新的 Xcode 项目并在创建时取消选择“使用 ARC”。添加要转换的文件,并将项目转换为 ARC。获取修改后的文件并将它们导入到您的其他项目中。

但是,手动转换文件可能更简单。这并不困难,即使对于大文件或整个项目也是如此。只需依靠编译器:构建您的应用程序,检查错误并简单地删除所有保留/释放调用并将任何NSAutoreleasePools 转换为@autoreleasepool {}. 如果与核心基础类型交互,您可能还需要添加 __bridge casts。

于 2013-04-10T13:12:49.887 回答
0

听起来您必须手动将此文件转换为 ARC,而不是依赖自动转换工具。您需要浏览文件并删除所有发布、保留等内容。我以前做过,虽然需要一段时间,但不会太痛苦。依靠来自 Xcode 的错误消息来指导您在代码中需要修复/删除的内容。这是我发现可能有帮助的几个链接。另请查看 Apple 的 ARC 文档和 WWDC 2011 会谈(在第二个链接底部引用)。

Xcode ARC 转换工具问题

http://blog.mugunthkumar.com/articles/migrating-your-code-to-objective-c-arc/

于 2013-04-10T12:57:35.873 回答