2012-01-13 2 views
0

私はすでにゲームを終えており、メモリの問題を解決しようとしています。cocos2dのノードツリーを調べる

私のゲームは36レベルで、私はiPodで動作させると、20〜25レベル後にアプリケーションがクラッシュすることに気付きました。私はメモリの警告を取得し始め、シーン間で切り替えるときに常にクラッシュします。

私は既にすべてのメモリリークを修正するために機器を使用しましたが、これはまだ起こっています。 私の推測では、ココスはまだ古いオブジェクトへの参照を保持しているということです。

ゲームの特定のポイントでココスのノード階層を調べて、すべてが問題ないことを確認する方法を探したいと思います。

どうすればいいですか?

+0

ノードを「見渡し」できるだけのプリントアウトが行われていますか? –

答えて

1

私はこれをやってしまった:

-(void) printChildren:(CCNode *)node andLevel:(NSInteger)level { 

    NSString *tabs = @""; 
    for (int i=0; i <level; i++) { 
     tabs = [NSString stringWithFormat:@"%@ ", tabs]; 
    } 

    NSLog(@"%@NODE %@. Children count: %d", tabs, node, node.children.count); 
    if (node.children.count == 0) { 
     return; 
    } else { 
     for (CCNode *child in node.children) { 
      [self printChildren:child andLevel:level+1]; 
     } 
    } 
} 

-(void) nodeHierarchy 
{ 

    NSLog(@"Printing nodeHierarchy! with an stack of %d scenes", [scenesStack_ count]); 
    for (CCScene *scene in scenesStack_) { 
     NSLog(@"Scene in stack: %@", [scene class]); 
     [self printChildren:scene andLevel:0]; 
    } 
} 

は私がreplaceScene方法でnodeHierarchy呼び出し:

私は階層を "描く" ことCCDirectorにいくつかのロジックを追加しました。

もっと視覚的なツールを持っているのはすばらしいことですが、これは私の役に立つものでした。

+0

簡単な方法の1つは、ブレークポイントやログステートメントをシーンのdeallocメソッドに渡します。シーンを変更した後にトリガされない場合、メモリリークがあることがわかります(これはおそらくインストルメントに登録されないリークです)。 – LearnCocos2D

0

ARCを持つSDK 5.0に移行できない理由は何ですか?

+0

私のアロケーション/リリースはOKです。私はインストゥルメンツでリークが見られません。 – Macarse

+1

@Aman Xcodeのすべてのアップデートは、私のために地獄を歩いてきました。いくつかの製品を出版することに近づくことは、更新しないことの大きな理由になります。 ARCがそのような視点から来ていてもそれほど熱くないと信じる理由はありません。 – YvesLeBorg

1

私はゲームの重要なステップで、保持されているテクスチャとリリースされているテクスチャを記録するためにCCTextureCacheを修正しました。ここでは、特にシーントランジションで 'removedUnusedTextures'が強制されます。あなたが見ているものは何でも、あなたのアプリを見る場所のヒントを与えるはずです。また、私は一意のタグですべてをタグ付けし、CCNodeに物を追加するすべてのクラスのタグを覚えている傾向があります。洗濯(クリーンアップ)で、私はタグの配列をランダウンし、それらを強制的に削除します。

+0

私はそれをすでに確認しています。私のテクスチャは大丈夫です:( – Macarse

+0

hmmm ... ok、あなたはTシャツを持っています。同様の問題に直面しています。私はJetBrainのAppCodeを持っています。 Xcodeの代わりにAppCodeを使うのではなく、プロジェクトのコーディング/デバッグフェーズのための素晴らしいツールです。 – YvesLeBorg

+0

@YvesLesBorg:ありがとう、私はそれをチェックします。 – Macarse

関連する問題