1

我可能听起来很懒惰,但我对如何继续这个主题有点困惑。我已经按照这个指南做得很好。

我的目标是将 Cocos2d v1.x 游戏项目转换为 Cocos2d v2.x,然后将项目代码重构为 ARC。

首先,我创建了一个空的 HelloWorld Cocos2d v2.x 项目并创建了 v2.x 静态库(来自 Steffen 的指南)。然后我将代码压缩到 ARC,HelloWorld 运行顺利。

问题是当我尝试将我已经编写的不会向 ARC 抱怨的类添加到同一个项目时(假设不会有很多 Cocos2d v2.x 与 v1.x 问题 - 例如使用不推荐使用的方法和类像 TouchJSON - 我的项目至少在我所见的范围内没有)。因此,我在项目中添加了一些不依赖于游戏其余部分的 Game 类(以减少潜在的 Cocos2d v2.Vs v1 问题的数量),以查看 ARC covnersion 是否适用于这些作为证明概念。添加它们后,我选择了:XCode 中的 EDIT->Refactor 选项。

但是现在编译器在以下方法中给了我一些 ARC 警告消息,例如“ARC 禁止自动释放的显式消息发送”:

return [[[self alloc] init] autorelease];

或者已经写好的dealloc方法的类似问题。

我假设 EDIT->Refactor 会更改添加的代码,但它似乎只工作一次。对此有任何提示吗?我应该在重构代码之前将所有代码添加到新项目模板中吗?

编辑:为了验证它是否是 XCode 错误,我创建了一个没有 Cocos2d 库的空 iOS 项目,然后将其转换为 ARC。然后创建了一个新的 NSObject 空子类并添加了一个 dealloc 方法并再次运行转换,它确实有效!所以我可能没有正确遵循一些步骤来创建和链接到静态库..

除此之外还有其他一些小问题(不是 XCode 相关,而是 Cocos2d v2.x 相关),例如CDXPropertyModifierAction不会自动包含到 CocosDenshion 文件夹中,我必须在创建静态文件后将其添加到项目中库(当我注意到这个问题时).. 但我想这与模板创建有关。

谢谢阅读!

4

1 回答 1

0

所以,是的,我可以确认评论中的解决方案确实有效。像往常一样,一些 IT 事情只是在各种选项中玩弄一下,看看它是否能改变预期(这不是一个错误,但我是愚蠢还是懒惰)。

对我有用的是使用 XCode 菜单中的 EDIT->Refactor 并取消选择我在创建静态库后转换的 Cocos2d 2.x 模板在第一个实例中创建的文件(例如 main.m 和 AppDelegate .m)(询问是否不清楚)。这顺利地将我所有新转换的 Cocos2d 2.x 类转换为 ARC 投诉类,是的,我的项目完全支持 Cocos2d 2.x 和 ARC :)。

请在下面找到我取消选择以使其正常工作的文件的屏幕截图: 在此处输入图像描述

于 2012-06-26T10:23:01.530 回答