1

iPhone用のアプリを開発していますが、メモリ管理の問題が発生しています。アプリの実行中、ライブバイトは無制限に継続的に増加します。コード内で問題を追跡しようとしましたが、ライブバイトがこれほど劇的に増加する原因となるものを見つけることができないようです。実行中に気付いたのは、CFString(Immutable)の割り当てが最も急速に増加し、減少したり一定に保たれたりしないことです。なぜこれが起こっているのか誰かが知っていますか?この実行中にアプリが実行するのは、ローカル配列または文字列からテーブルビューにデータを入力し、次に文字列オブジェクトの別の配列をダウンロードして別のテーブルビューにデータを入力することだけです。ARCを使用しています。

ここに画像の説明を入力してください

4

1 に答える 1

1

先に進むべき具体的なものがないことを考慮して、私はあなたにいくらか一般的な助言を与えます:

  • Instrumentsを使用してリークを見つける方法については、Instruments を使用したリークの検索を参照してください。

  • 割り当てから、それらの割り当てのソースのより意味のある分析に移行する方法についての具体的なアドバイスについては、このStack Overflow answerのポイント #4 を参照してください。要するに、割り当てで説明のつかないジャンプの 1 つを強調表示し、一番下のウィンドウをコール ツリーを表示するように設定し、システム ライブラリを非表示にして、どのルーチンでメモリが消費されているかを確認します。

  • また、静的アナライザーを見落とさないでください。これは、ARC を使用しない場合、または Core Foundation 呼び出しを使用する場合に特に重要です。

  • Core Foundation の機能を使って何かしていますか? CFBridgingReleaseもしそうなら、明示的に所有権を ARC に譲渡する (またはを使用__bridge_transfer) か、手動で を呼び出す必要があることを明らかに知っておく必要がありますCFRelease。ただし、前のポイントの静的アナライザーはこれを指摘します。

于 2013-01-07T22:36:56.443 に答える