我可能听起来很懒惰,但我对如何继续这个主题有点困惑。我已经按照这个指南做得很好。
我的目标是将 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 文件夹中,我必须在创建静态文件后将其添加到项目中库(当我注意到这个问题时).. 但我想这与模板创建有关。
谢谢阅读!