5

計測器を使用してIOSアプリケーションのメモリ使用量を確認しているところ、CFStringが割り当てられて増え続けていることがわかりました。コードでNSStringオブジェクトを作成するときに、[[NSString alloc] init]のようなものではなく、StringWithFormatメソッドを使用しました。どうすればこれを止めることができますか?次の画像は、機器の出力のスクリーンキャプチャです。

質問に必要な情報が不足している場合は教えてください。

楽器のスクリーンショット

4

2 に答える 2

0

便利なコンストラクターを使用して多くの一時オブジェクトを作成する場合は、カスタム自動解放プール ブロックを使用することをお勧めします。便利なコンストラクターを使用して作成されたオブジェクトは自動解放されるため、すぐに解放されない場合があります。これが、メモリ使用量の急増の理由です。

アップルから:

多くのプログラムは、自動解放される一時オブジェクトを作成します。これらのオブジェクトは、ブロックの最後までプログラムのメモリ フットプリントに追加されます。多くの場合、現在のイベント ループの反復が終了するまで一時オブジェクトを蓄積できるようにしても、過度のオーバーヘッドは発生しません。ただし、場合によっては、大量の一時オブジェクトを作成してメモリ フットプリントを大幅に増やし、より迅速に破棄する必要がある場合があります。後者の場合、独自の autorelease プール ブロックを作成できます。ブロックの最後に、一時オブジェクトが解放されます。これにより、通常は割り当てが解除され、プログラムのメモリ フットプリントが削減されます。

http://www.cocoanetics.com/2009/08/understanding-autorelease/

于 2013-08-29T12:09:24.053 に答える