2011-10-20 16 views
1

私は数週間から私のiPhoneアプリのメモリ問題に苦労しており、オンラインで包括的な研究にもかかわらず、まだ問題を解決することができませんでした。iPhoneメモリがビューのアンロードとデアロック解除後に解放されないのはなぜですか?

私のアプリケーションはGoogleアナリティクスAPIと通信し、メインビュー、セットアップビュー、Googleからのデータを表示するテーブルビュー(カスタムセル付き)の3つの基本ビューに基づいています。私はまた、Googleからデータを取得し、それが終了すると自分自身を殺すカスタムクラスを構築しました。すべてのデータはシングルトンデータセンターに保存されます。

すべてのビューが開始され、その後、次のように解放されています

if (self.vVisitsTabelView == nil) { 
    visitsTabelView *initiatevisitsTabelView = [[visitsTabelView alloc]  initWithNibName:@"visitsTabelView" bundle:nil]; 
    self.vVisitsTabelView = initiatevisitsTabelView; 
    [initiatevisitsTabelView release]; 
} 

[self.navigationController pushViewController:vVisitsTabelView animated:YES]; 
[vVisitsTabelView release]; 
vVisitsTabelView = nil; 

問題はそれがビューメモリが増加するごとにロードすることですが、ビューがポップされたときにdeallocが呼び出されているものの、それがメモリを解放していませんすべてのインスタンス変数が解放されています。このサイクルは何度も繰り返され(同じビューを再ロードしている間に)、メモリ消費量は非常に高くなります。使用を要求した後、私は200メガバイトのリアルメモリと320のバーチャルインストゥルメントを得ました。奇妙なことにメモリ警告が1回だけ受信されましたが、メモリが足りずにアプリケーションがクラッシュすることはなく、計測器にはリークがないことが示されています。バックグラウンドに入る前に、しかし、私は、フォアグラウンドメモリに戻ったときに戻っレベルに再利用され、メモリが徐々に他のアプリでリリースされ、使用されている背景を入力した後

(多分仮想MEMを形成します?)。このプロセスには9秒かかり、その時間はアプリがフリーズします。

この状況をどのように攻撃するか?私はどこでも調べて、すべてのガイドラインに慎重に従ってきました。

どれリードが高く評価され、私は、これがこの素晴らしい場所で私の最初の時間で、ガイドラインに従わなかった場合は...

は私を許しなさい。

答えて

-3

ビューの保持数を確認しましたか? [theView retainCount]はこれを行います。

いずれにしても、iOS5の新機能であるARCに移行することを強く検討する必要があります。あなたはすべてのあなたの記憶管理苦境にさようならを言うことができるはずです。

+0

ご返信ありがとうございます... ARCに移行すると、以前のバージョンのIOSと互換性がありますか? IOS 3.3と言うことができますか? – Sheni

+0

ARCはiOS 4.3以上でしか使用できないため、iOS3とそれ以前のバージョンのiOS4のサポートを削除する必要があります。 –

+3

retainCountは役に立たない。オブジェクトを保持しているがリリースされていないものを判別するには、allocation instrumentsを使用します。 – bbum

2

ありがとうございます、ありがとうございます。

はい。あなたにはメモリリークがあります。今、リークス機器は、漏れていることを教えてくれないかもしれません。まだアプリケーションの残りの部分に何らかの形で接続されているオブジェクトは検出されません。つまり、オブジェクトへの参照がまだアプリケーションによって使用されているNSMutableDictionaryのどこかに保持されている場合、それは検出されません。

、あなたが漏洩している正確にどのオブジェクトを知っているので、それを保持しているものを考え出すの問題ですが、それが解放されません。 Allocations計測器は、この機能を正確に提供します。具体的には、割り当てカウントを追跡するように[割り当て]計測器を設定できます。

この記事はヘルプhttp://www.friday.com/bbum/2010/10/17/when-is-a-leak-not-a-leak-using-heapshot-analysis-to-find-undesirable-memory-growth/の可能性があります。

また、SOそのアドレスに非常によく似た質問/回答はこれがいくつかあります。ここ数週間のうちに私が見つけられないものがあります。あなたが望むものを正確に行う方法についての素晴らしい絵のチュートリアルがあります。

+0

ありがとう!あなたは今週末のプランを私に提供しました;) – Sheni

関連する問題