2011-12-05 3 views
0

私はcocos2dで私のゲームのメモリが不足している最悪の最悪の時間を持っています。メモリのゴブを使用しているcocos2d

私は4つのシーンがあります。

[[CCDirector sharedDirector]replaceScene:sceneWithTransition] 

私はプッシュ/ポップを試してみると、約10倍悪化しています。

しかし、シーンの2つはウイルスのようです。私がそれらをメモリから取り除くことができる条件は存在しない。 私はARC変更を使用しています。私は彼らが助けてくれることを望んでいた、彼らはしなかった。

クリーンアップメソッドをオーバーライドして、シーン内のすべてのものへの参照を削除しました。最初のゲームシーンはゲームプレイシーンです。私は何とかシーンを抱きしめていた可能性があることを想像することができます。しかし、もう1つは設定シーンです。それは5部を持っています。彼らはすべて投げつけられますが、シーンはパージされません。 ARCに変換する前にアプリが使用できなくなりました。頻繁にクラッシュしました。クラッシュしていないときは、メモリが不足していました。 ARCの後は、これまでよりも約4倍長くなりますが、メモリが不足しています。しかし、クラッシュはほとんど存在しない。

まず、シーン間を切り替える正しい方法は何ですか? 第2に、object = nilは何もしないので、archを使用しているときにメモリから何かを削除する方法はありますか? ARCを使用している私の他のプログラムはすべて、夢のように動作します。いずれもcocos2dエンジンを使用していません。私はquartz2dゲームをcocos2dに変換する間違いをするまで、arcの導入以来のメモリエラーは見ていませんでした。私が実際に機能するプラットフォームに戻っていない唯一の理由は、私がココスで可能な効果が本当に好きで、単に石英で仕事をすることができないということだけです。

答えて

1

cocos2dはsome issues with ARC that got fixed only recentlyだったようです。

これはあなたのメモリの問題と関係があるのか​​どうかわかりませんが、使用しているcocos2dのバージョンを確認することができます。

とにかく、cocos2dはバージョン2.0からのみARCを完全にサポートしているようです。したがって、releaseを正しく使用して、ARCを使用せずにメモリ管理を正しく行う方がよいかもしれません。私が知る限り、cocos2dにはメモリの問題はないので、それを達成できるはずです。

1

私が理解しているところから「スタック」モデルを使用すると、新しいシーンがプッシュまたはポップされたときにメモリが消去されないため、このメソッドを使用するとその状態が悪化する理由が説明されます。

あなたは、特に移行中にメモリを節約するのに役立つ方法は、読み込み中のシーンに移行し、そこから実際のシーンに移行することです。これは、通常のトランジションでは、両方のシーンが少なくとも1つのフレームで同時にメモリを占有しますが、安価なロードシーンではそれぞれの場所が取られ、2つの強烈なシーン間で遷移するときにしばしば発生する恐ろしいメモリスパイクが減少します。

+0

お返事ありがとうございます。 – user1082068

+0

ベストを見つける答えを受け入れることを忘れないでください – mm24

関連する問題