0

みなさん、こんにちは。次号はこんな感じで色んな画像を作っています

UIImage *image = [UIImage imageNamed:_imageName];

そして私は1つのUIImageViewに割り当てています

[self.imgvImage setImage:image];

ユーザーがボタンをタップすると、1つのUIImageViewが作成され、1つのUIImageが割り当てられます。新しいものが作成されたときに、4つのUIImageViewが作成され、最後のUIImageViewが削除され、次のようにUIImageViewにリリースが送信されます。

[_imgvImage release];

しかし、1つのメモリ戦争の作成と解放は約100回発生しますが、アプリはクラッシュしません。これは、作成されたUIImageが解放されておらず、すべてのコードがクリーンで作成と解放がすべて正常であるため、非常に多いためだと思います。

UIImageを含むすべてのUIIMageViewをメモリから完全に削除するにはどうすればよいですか。

助けてください、私の英語が上手くいかなくてすみません。

4

2 に答える 2

1

以下のステートメントを使用して作成されたイメージは、iOS によって処理されます。この画像はキャッシュに保存されるため、次にこれを呼び出すと、キャッシュから単純に返されます。

UIImage *image = [UIImage imageNamed:_imageName];

割り当てているもの (この場合は UIImageView) を解放している限り、メモリ警告について心配する必要はないと思います。メモリ クランチが発生した場合、iOS はこのキャッシュをクリアする必要があります。

そのキャッシュが必要ない場合 (たとえば、1 つの画像を 1 回だけロードする場合)、UIImage の imageWithContentsOfFile: メソッドを使用できます。

于 2012-07-11T14:57:11.320 に答える
-2

こんにちは、解決策が呼び出された解決策を見つけました

NSAutoreleasePool

次のようにビューのオブジェクトを削除したときのメソッドで:

for(ProductVW *pVW in [_vwProductsContainer subviews]){

            NSAutoreleasePool * autoreleasePool = [[NSAutoreleasePool alloc] init];

            [pVW removeFromSuperview];

            [autoreleasePool release];

}
于 2012-07-11T15:32:23.230 に答える