1

私はIOSを初めて使用し、PCから来て、メモリとバッテリリソースの管理の感触をつかもうとしています。

非常に軽いUIImageViewサブクラスがあります(これは、いくつかのメソッドを持つ画像プレースホルダーです)。このサブクラスは、いくつかのルートビューに繰り返し追加されたり、削除されたりします。各ルートビューでサブクラスへのIBOutlet参照を保持しています。

あなたは:

  • ルートビューからサブクラスを追加/削除するだけですか(そしてそれをメモリに保持します)?

または

  • 毎回サブクラスインスタンスを作成して破棄しますか(メモリは解放されますが、余分な作業が発生します)?

これは検討する価値がありますか、それとも私は何も心配していませんか?

UIImageViewサブクラスが非常に大きい場合、あなたの答えは同じでしょうか?

これらの問題を測定する方法はありますか?

4

4 に答える 4

2

UIImageView通常、 iOS では無視して 使用できます。UIImageView画像を処理するためのいくつかの方法を使用したクリッピング領域にすぎません。

より多くのメモリを消費するリソースは にUIImage含まれてUIImageViewおり、これらは iOS によってキャッシュされます。

UIImageViewsしたがって、それらを作成および破棄するコストはほとんどありません。それらの割り当てを解除し、メモリリークしないように注意してください。何百ものものがない限り、問題ありません。

サブクラスが「大きい」かどうかは問題ではなく、クラス内のコードが複数回ロードされることはありません。クラスに余分な状態がたくさんある場合-それはいくらかのメモリを消費しますが、UIImageView.

于 2012-08-10T13:14:03.827 に答える
1

記憶にとどめておいたほうがいい。画像ビューを継続的に再作成してデバイスの速度を落とさないと、ユーザー エクスペリエンスが大幅に向上します。貧弱な 1 つの UIImageView インスタンスは、常に再作成するための時間と労力に見合うだけのメモリ負荷ではありません。

于 2012-08-10T13:38:56.347 に答える
1

パフォーマンスを向上させるためにそれを記憶しておくことは、あなたが思っているほどヒットではありません.あなたが持っている他の答えから得られます. ただし、メモリの警告が表示された場合はメモリから削除し、必要に応じて元に戻す方法を提供する必要があります。

于 2012-08-10T13:39:29.560 に答える
0

私はあなたの最初のオプションを使い、それを記憶に留めておきます。これは、自分のビューを維持して再利用するのが便利だと思うからです。これは、彼らが自分の状態と内容を覚えていることを意味し、多くの場合に役立ちます. 私は通常、必要に応じてコンテンツをリセットまたは更新するメソッドを作成します。

メモリに保持すると、ビューの読み込みもわずかに増加する可能性がありますが、通常は違いに気付かず、両方の方法を使用している人を目にします。

はい、特にこの決定がバッテリーに影響を与えると思われる場合は、少し心配しすぎていると思います.

メモリ管理に関しては、使用しているイメージビューが 1 つしかない限り、イメージビューをメモリに保持したり、解放/再作成したりすると、まったく同じ量のメモリが消費されます。唯一の違いは、再作成する場合、割り当てと解放を繰り返していることです。

ただし、ユーザーが開くたびに新しいイメージビューを作成し、それらを決して手放さないと、メモリの問題が発生する可能性がありますが、それはプログラミングで根本的に間違ったことをしていることを意味します。

自分が何をしているのかを知っている限り、このような場合にメモリの量を心配する必要はありません - 十分あります。大きな画像を扱う場合は、心配し始めてください。

特に ARC を使用している場合は、あまり心配する必要はありません。ハッキングを開始してください。メモリを手動で管理している場合は、再利用することをお勧めします。これにより、頭痛が軽減され、巨大なリークのリスクが軽減されるからです。この場合は、leaktools と分析ツールを使用して確認してください。

于 2012-08-10T13:35:29.207 に答える