私は怠惰に聞こえるかもしれませんが、私はこの主題をどのように進めるかについて少し混乱しています。私は非常によくできているこのガイドに従いました。
私の目標は、Cocos2dv1.xゲームプロジェクトをCocos2dv2.xに変換してから、プロジェクトコードをARCにリファクタリングすることです。
開始するには、空のHelloWorld Cocos2d v2.xプロジェクトを作成し、v2.x静的ライブラリを作成しました(Steffenのガイドから)。次に、コードをARCにrafactoredすると、HelloWorldはスムーズに機能しました。
問題は、ARCに文句を言わないクラスを同じプロジェクトに追加しようとしたときです(Cocos2d v2.xとv1.xの問題はそれほど多くないと仮定します-たとえば、非推奨のメソッドとクラスの使用TouchJSONのように-私のプロジェクトは少なくとも私が見ることができる限りではありません)。そこで、ゲームの残りの部分に依存しないいくつかのゲームクラスをプロジェクトに追加して(潜在的なCocos2dv2。vsv1の問題の数を減らすため)、ARCの概念実証がそれらのクラスで機能するかどうかを確認しました。コンセプト。それらを追加した後、XCodeから[編集]->[リファクタリング]オプションを選択しました。
しかし、コンパイラは次の方法で「ARCは自動解放の明示的なメッセージ送信を禁止します」のようないくつかのARC警告メッセージを表示します。
return [[[self alloc] init] autorelease];
または、すでに記述されているdeallocメソッドに関する同様の問題。
EDIT-> Refactorで追加されたコードが変更されたと思いましたが、機能するのは1回だけのようです。これに関するヒントはありますか?コードをリファクタリングする前に、すべてのコードを新しいプロジェクトテンプレートに追加する必要がありますか?
編集:それがXCodeのバグであるかどうかを確認するために、Cocos2dライブラリを含まない空のiOSプロジェクトを作成し、それをARCに変換しました。次に、NSObjectの新しい空のサブクラスを作成し、deallocメソッドを追加して、変換を再実行しました。これでうまくいきました。そのため、静的ライブラリを作成してリンクするためのいくつかの手順を正しく実行しなかった可能性があります。
これに加えて、CDXPropertyModifierActionがCocosDenshionフォルダーに自動的に含まれず、静的なものを作成した後にプロジェクトに追加する必要があったなど、他の小さな問題がいくつかあります(XCode関連ではなく、Cocos2d v2.x関連)。ライブラリ(問題に気付いたとき)。しかし、これはテンプレート作成に関連していると思います。
読んでくれてありがとう!