2010-11-25 15 views
0

私は、サードパーティの開発者から提供されたアプリケーションをテストしており、アプリケーションを大量に使用した後、一見無作為の "0xeb2f0d0インスタンスを解放したメッセージ"というメッセージが表示されていることを確認しています。これは、通常のメニュー重度使用後に割り当て解除されたインスタンスに送信されたメッセージ?

それは終わりで正しく解放するようだクラスのロケーションマップ、から来ているに戻っていたとき:

//使用されていない任意のキャッシュされたデータ、画像などをリリース。 }

- (void)viewDidUnload { 

//メインビューのいずれかを保持サブビューを解放します。 //例self.myOutlet = nil;私の人生のために }

- (void)dealloc { 
    [super dealloc]; 
} 


@end 

それが唯一の重い使用後に起こるなぜ、私が理解できない - 任意のアイデア?

おかげ

ニール

答えて

0

メモリの警告があなたのオブジェクトが解放されるようにする場合は、チェックかもしれない - あなたはシミュレータでそれをシミュレートすることができます。この場合、画面に表示されないビュー/コントローラがデータをアンロードする可能性があります。これが問題であれば、実際のの問題は、オブジェクトをそれに応じて初期化しないということです(ただし、マルチタスキングではますます投機的になるという警告に依存しています)。

+0

あなたのお返事ありがとうございます恵子、私はこれを試しました。最初の2回のメモリ警告は、同じエラーメッセージ(ただし異なるクラス)で即時に警告を出しました。しかし、次の2回はそれに対処しました。私は、iPhoneのシミュレータをリセットしてもう一度試してみると、それが起こる前に再生する時間が長くなることに気付きました。これはメモリの問題のようですね。 – Neil

+0

はい、そうしたケースを処理するのはあなたの責任です。メモリの警告が発生した場合は、ビュー/ビューコントロールをアンロードしないように選択することができます(Appleのドキュメントをチェックしてください)。これはお勧めできませんが、一時的な解決策として動作します。ただし、重度の使用後にメモリの問題が発生した場合、これはメモリリークを示しているため、Instrumentsで調査する必要があります。 – Eiko

関連する問題