0

プロジェクトで自動参照カウントを使用しています。3 つの画面があります。最初の画面には、リンクを含むテーブル ビューを持つ 2 番目の画面に移動するボタンがあります。リンクをクリックすると、別のビュー コントローラーの Web ビュー内で開きます。画面間を移動するためにナビゲーションコントローラーを使用しています。アプリケーションのプロファイリング中に、メモリ割り当てを監視していました。最初の画面のライブ バイトが 5.27 であることがわかりました。ボタンをクリックして次の画面に移動すると、最初の画面に戻ったときの読み取り値は 5.45 でした。 5.36 でしたが、最初の画面で初期値 (5.27) と最終値 (5.36) の間にわずかな違いがありました。しかし、もう一度 2 番目の画面に移動し、2 番目の画面から Web ビュー内のリンクを開くと、読み取り値は 7.93 でした。再び最初の画面に移動したとき、測定値は 6.57 でした。そのため、Web ビューを開いたときの最初の画面の最初の読み取り値と最終的な読み取り値には大きな違いがあります。読み取り値に違いが生じる理由は何ですか? メモリリークが0になったときに使用されるバイトはどこにありましたか。

4

1 に答える 1

1

これはキャッシングが原因で、メモリ警告を受け取ったときにこれを呼び出してすべての脂肪を解放します

 [[NSURLCache sharedURLCache] removeAllCachedResponses];

APp の起動時に次の呼び出しでキャッシュを構成できます。

 int cacheSizeMemory = 4*1024*1024; 
int cacheSizeDisk = 32*1024*1024; 
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"];
[NSURLCache setSharedURLCache:sharedCache];
于 2012-12-31T10:05:27.007 に答える