0

UIImageviewインストゥルメントは、アプリでaの画像名をすばやく設定すると、大量のメモリが割り当てられていると言っています。UIImageViewゲームのフレームごとに画像名を変更するものがあります。楽器のゾンビチェックでプロファイリングすると、アプリは絶えず膨大な速度でライブバイトを獲得しているようです。の現在の画像の割り当てを解除しUIImageViewて、これを停止する方法はありますか?ARCを使用しています。

の画像を割り当てるための私のコードUIImageViewは次のとおりです。

aPlanet.image = [UIImage imageNamed:tempPlanetName];

ここで、aPlanetは、UIImageViewおよびtempPlanetNameは画像の名前です。これはすべてのフレームと呼ばれます。

4

2 に答える 2

4

[UIImage ImageNamed:]メソッドは、画像を画像ビューにロードし、この新しく作成されたuiimageオブジェクトを自動解放プールに追加します。この問題を取り除くには、次を使用する必要があります-

NSString * imgPath = [NSBundle mainbundle] pathForResource:@ "imageName" ofType:@ "png"]; aPlanet.image = [[UIImage alloc]] initWithContentsOfFile:imgPath];

arcを使用している場合は、initWithContentsOfFile:メソッドを使用して作成されたこの新しく割り当てられたuiimageのオブジェクトを解放する必要はありません。

于 2013-01-04T09:55:52.833 に答える
1

使用UIImage imageNamed:すると、その画像ファイルが読み込まれ、キャッシュされます。これは、アプリケーションで複数回使用されるアイコンやその他の画像リソースの再利用を目的としています。

フレームごとに新しい画像で画像ビューを更新するのは少し珍しいように見えますが、複数回必要としない画像を読み込む別の方法を検討する必要があります。必要な場合でも、ライフサイクルをより細かく制御する必要があります。 。

たとえば、を見てくださいUIImage imageWithContentsOfFile:(ここに文書化されています:Apple Developer Library Reference)。このメソッドは画像コンテンツのキャッシュを行わないことを明示的に示しています。

これがお役に立てば幸いですが、すべてのフレームで、このアプローチでパフォーマンスが十分に向上するとは思えませんが、必要が生じた場合は、これはおそらく別の質問のトピックです。

于 2013-01-04T09:38:05.103 に答える