0

新しいviewControllerを追加するたびに、ObjectAllocは非常に高くジャンプし、元に戻ることはありません。removeFromSuperview を呼び出した後でも。これは正常ですか?

if((UIButton *) sender == gameArcadeBtn) {
        GameArcade *gameArcadeController = [[GameArcade alloc] 
                              initWithNibName:@"GameArcade" bundle:nil]; 
        self.gameArcade = gameArcadeController; 
        [gameArcadeController release]; 
        [self.view insertSubview:gameArcadeController.view atIndex:1];
    }
4

2 に答える 2

0

ビューをインスタンス化すると、常に多くのオブジェクトが作成されます。このビューがメモリ内にあるか、自動解放されていない限り、オブジェクトはメモリ内に割り当てられたままになります。したがって、あなたの質問に答えるには、これは正常です。

メモリの使用量を心配しているようですが、オブジェクトの割り当てを監視してアプリのリークを見つけることがより重要です。

メモリ管理のヒント:
1) 遅延読み込みを行います。アプリの開始時にすべてではなく、ユーザーが要求したときにのみビューをロードします
2) もう必要なくなったら、可能な限りすべてを削除します。これは、viewWillAppear と viewDidDisappear で大量の作業を行うことを意味します
3) @properties と、それが自動解放にどのように関連するかについて学び、すべてにプロパティを使用しないでください。
4) 魅力的ですが、自動解放を避け、不要になったオブジェクトを手動で解放します。

于 2009-09-17T05:27:58.743 に答える
0

これはおそらく、ビューのコントローラーをクラスに保持していることが原因です。それを解放してみてください

于 2009-09-17T05:28:14.833 に答える