iOS 6.1 では、scrollView を備えたビュー コントローラーがあり、ユーザーがページをフリックするときにいくつかの画像を表示する必要があります。scrollView には、現在、前、次の画像をそれぞれ表示する 3 つのサブビューがあります。スクロール中に画像が入れ替わります。メカニズムは正常に動作しますが、リソースが期待どおりに解放されず、約 15 枚の画像をスクロールした後にアプリが終了します。
最初は、新しい画像をUIImageViewに割り当てるだけで問題を解決しようとしましたが、うまくいかなかったので(画像がキャッシュされていることを読みました)、別のアプローチを試しました:
// access the UIImageView of the currentView
for (UIView *subviewOfCurrentView in [currentView subviews]) {
if ([subviewOfCurrentView isKindOfClass:[UIImageView class]]) {
UIImageView *cv = (UIImageView *)subviewOfCurrentView;
//cv.image = nil;
[cv removeFromSuperview];
UIImageView *new_cv = [[UIImageView alloc] initWithFrame:photoRect];
new_cv.image = [UIImage imageNamed:[myObject getFileName];
[currentView addSubview:new_cv];
}
}
アクティビティ モニターを使用してアプリをプロファイリングすると、サブビューの数が一定のままであるにもかかわらず、画像をフリックすると実際のメモリ使用量が増加し続けることがわかります。
アプリは didReceiveMemoryWarning を呼び出さずに終了することに注意してください。
UIImage(s) と UIImageView(s) で使用されているメモリをアプリに解放させるにはどうすればよいですか?
あなたが私を助けることができれば、とても感謝しています。