2009-08-26 15 views
0

私は複数のビューを使用するiPhoneアプリケーションを作成しており、それぞれ独自のコントローラを備えています。 initWithNibName:を使用してプログラムでロードされ、他のコントローラに切り替える前に解放されるため、一度に1つのビューしか表示されません。 ビューコントローラを解放した後(私はdeallocが呼び出されたことを確認しました)、すべてのメモリが解放されるわけではありません。私はコントローラを削除するときにすべてのアウトレットをリリースします。また、コントローラのdeallocでself.viewをnilに設定しても問題は解決しません。計器からの漏れは漏れを示さないが、メモリ消費はより大きくなる。nibからロードされたView Controllerを完全にアンロードする方法は?

コントローラからのビューをメモリから完全に削除する方法はありますか?私は新しいコントローラが作成される前と削除される前に、同じ空きメモリ量を使いたいと思っています。

答えて

2

どのクラスでも保持と解放を無効にして、保持カウントが予想よりも高くなったときをよりよく理解できます。このような

何か:

- (id) retain 
{ 
    NSLog(@"Retain: Retain count is now %d", self.retainCount+1); 
    return [super retain]; 
} 

- (void) release 
{ 
    NSLog(@"Release: Retain count is now %d", self.retainCount-1); 
    [super release]; 
} 

ことが言われて、私はあなたがあなたの「メモリリーク」は単にシステムがキャッシュされているものではないことを確認しなければならないと思います。同じシーケンスを何度も繰り返すことで、一貫してより多くのメモリを使用できる場合は、リークが発生します。

1

問題は今解決されました、それはUIWebViewでした。それはいくつかのキャッシュを保持し、それをクリアする方法はありませんでした。 UIWebViewをUIScrollView(単純なローカルページを表示するために使用されていた)に置き換えた後、問題はなくなりました。

関連する問題