2

ARC を使用する私の iPhone アプリケーションでは、特定のビュー コントローラをプッシュすると、解放されない大量のメモリ割り当てが発生します。ほとんどの Live Bytes にはヘッダー VM: CoreAnimation があります。

ここに画像の説明を入力

ビューコントローラーをプッシュするなど、さまざまなコードを @autoreleasepool { } でラップしようとしましたが、違いはありません。ビュー コントローラが不要になったら、それらを nil に設定しても役に立ちません。

あなたの助けとアドバイスは大歓迎です!

アップデート

メモリ割り当てのタイミングが、テーブル ビューからプッシュされた CorePlot チャートの詳細ビューと一致していることに気付きました。詳細ビューは、テーブル ビューのヘッダー ファイルでも参照されていました。1 つの問題は、詳細ビューを nil に設定してから、プッシュする前に再割り当てしていたことです。代わりに、テーブル ビューが最初に読み込まれたときにのみ詳細ビューを 1 回開始し、各プッシュの前にその内容を更新すると、メモリ割り当ては 1 回だけ行われます。

ただし、詳細ビューが最初にプッシュされたときにまだ大きなメモリ割り当てがあり、解放されないため、問題を完全に解決することはできませんでした。

4

2 に答える 2

0

メモリの問題は、割り当てを解除しようとしたときにメモリを解放していない新しい Core-Plot チャートの作成が原因であることがわかりました。

チャートの割り当てを解除しようとしたときに、この関数を使用してパフォーマンスを改善することができました。

[グラフ removePlot:プロット];

これは状況を大幅に改善するのに十分でしたが、私はまだ 100% のメモリ解放に苦労しています. Core Plot フォーラムを読むと、このような問題を経験したのは私だけではないようです...

https://groups.google.com/forum/#!searchin/coreplot-discuss/memory/coreplot-discuss/nWui9VjnMtQ/er2FO3o9syYJ

于 2013-10-28T10:11:25.187 に答える