0

サーバーから読み込んだ画像のサムネイルを使用してアプリを構築しようとしています。画像は大量にあります。そのため、iPod で実行しようとすると、50 ~ 60 枚の画像を読み込んだ後にクラッシュします。クラッシュの原因は、計測器でアプリをテストしてわかったメモリ リークです。imageViews と各 imageView のボタンを使用し、それらのオブジェクトも解放しました。これが私のアプリで使用した私のコードです。

NSInteger result = [self loadedBlipCount] + (_feed.hasMore ? 1 : 0);


if (result == 0 && _emptyFeedCell)
    result = 1;
int outer_count = result/3;


scroll_view.backgroundColor = [UIColor whiteColor];

scroll_view.delegate = self;

for (int i=0; i<outer_count; i++)
//if (i<outer_count)

{
    xPos = 10;

    for (int j=0; j<3; j++) {


        _blipyy = [_feed blipAtIndex:count];


       image_view = [[URLImageView alloc] initWithFrame:CGRectMake(xPos, yPos, 90, 90)];

        image_view.tag = count_tag;
        image_view.url = _blipyy.image_tab_images;



        UIButton *img_butt = [[UIButton alloc] initWithFrame:CGRectMake(xPos, yPos, 90, 90)];
        img_butt.tag = count_tag + 10000;
        [img_butt addTarget:self action:@selector(image_tapped:) forControlEvents:UIControlEventTouchUpInside];

        xPos = xPos + 95;
        count = count + 1;
        count_tag = count_tag + 1;
        //count_1= count_1 +1;

        [scroll_view addSubview:image_view];
        [scroll_view addSubview:img_butt];
        [image_view release];
        [img_butt release];
        //[image_view release];
    }
    // });
    yPos = yPos + 95;

}

この問題で私を助けてください。前もって感謝します!!

4

3 に答える 3

1

スクロール ビューの代わりに、独自の実装でUITableViewカスタマイズUITableViewCellしてセルを再利用します。メモリの問題なく動作します。

于 2013-02-19T11:44:00.973 に答える
0

この問題では、アプローチを変更する必要があります。どちらかを使用することが重要ですUITableView(メモリの問題を処理するのに役立ちます)。ただし、それでも先に進んで使用しUIImageViewたい場合は、このAsyncImageViewを使用することをお勧めします。このAPIを呼び出すには:

ASyncImage *img_EventImag = alloc with frame;
NSURL *url = yourPhotoPath;
[img_EventImage loadImageFromURL:photoPath];
[self.view addSubView:img_EventImage]; // In your case you'll add in your TableViewCell.

UIImageViewを使用するのと同じです。簡単で、ほとんどのことを実行します。AsyncImageViewには、iOSで画像を非同期にロードおよび表示してUIをロックしないようにするためのUIImageViewの単純なカテゴリと、より高度な機能のためのUIImageViewサブクラスの両方が含まれています。AsyncImageViewはURLで機能するため、ローカルファイルまたはリモートファイルで使用できます。

ロード/ダウンロードされた画像はメモリにキャッシュされ、メモリ警告が発生した場合に自動的にクリーンアップされます。AsyncImageViewはUIImageキャッシュとは独立して動作しますが、デフォルトでは、アプリケーションバンドルのルートにある画像は代わりにUIImageキャッシュに保存され、キャッシュされた画像の重複を回避します。

ライブラリは、基盤となるロードクラスとキャッシュクラスへの直接アクセスを提供するため、UIImageViewとは独立して画像をロードおよびキャッシュするためにも使用できます。

于 2013-02-19T11:42:27.547 に答える
0

SDWebImage を試してみてください。私のすべてのプロジェクトで完璧に機能し、統合も使用も簡単です。

https://github.com/rs/SDWebImage

于 2013-02-19T11:36:24.237 に答える