我可能听起来很懒,但我对如何继续这个问题感到有些困惑。我已经关注了this guide,这是非常好的。
我的目标是将Cocos2d v1.x游戏项目转换为Cocos2d v2.x,然后将项目代码重构为ARC。
首先,我创建了一个空的HelloWorld Cocos2d v2.x项目并创建了v2.x静态库(来自Steffen的指南)。然后,我将代码改为ARC,HelloWorld运行顺利。
问题是当我尝试向同一个项目添加我已编写的类而不向ARC抱怨时(假设Cocos2d v2.x与v1.x问题不会很多 - 例如使用不推荐的像TouchJSON这样的方法和类 - 我的项目至少在目前为止我看不到。因此,我添加了几个游戏类,这些游戏类不依赖于游戏的其余部分(以减少潜在的Cocos2d v2。vs v1问题的数量)到项目,看看ARC covnersion是否适用于那些作为证明概念。添加它们后,我选择了:EDIT->来自XCode的重构选项。
但是现在编译器在下面的方法中给了我一些ARC警告消息,比如“ARC禁止显式消息发送自动释放”:
return [[[self alloc] init] autorelease];
或者已经编写了dealloc方法的类似问题。
我假设EDIT-> Refactor会改变添加的代码,但它似乎只能工作一次。有什么暗示吗? 我应该在重构代码之前将我的所有代码添加到新项目模板吗?
编辑:为了验证它是否是一个XCode错误,我创建了一个没有Cocos2d库的空iOS项目,然后将其转换为ARC。然后创建了一个新的空的NSObject子级并添加了一个dealloc方法并再次运行转换,它确实有效!所以我可能没有正确地遵循一些创建和链接到静态库的步骤..
除此之外还有其他一些小问题(不是与XCode相关,但与Cocos2d v2.x相关),就像 CDXPropertyModifierAction 不会自动包含在CocosDenshion文件夹中而且我有在创建静态库之后将其添加到项目中(当我注意到问题时)..但我想这是更多模板创建相关。
感谢阅读!
答案 0 :(得分:0)
所以,是的,我可以确认评论中的解决方案确实有效。像往常一样,IT的一些事情只是在玩各种选项,看看它是否有效改变了预期(它不是一个错误,但我是愚蠢或懒惰)。
对我来说有用的是使用XCode菜单中的EDIT-> Refactor,并在创建静态库之后通过Cocos2d 2.x模板取消选择在第一个实例中创建的文件(例如main .m和AppDelegate.m)(询问是否不清楚)。 这将我所有新转换的Cocos2d 2.x类顺利转换为ARC投诉类,是的,我的项目完全支持Cocos2d 2.x和ARC :)。
请在下面找到我取消选择的文件的屏幕截图,以使其正常工作: