0

私のアプリでは、ThumbDownloader と呼ぶクラスで遅延読み込みを実装しています

画像のダウンロードを開始するために、私の UITableView cellForRowAtIndexPath メソッドは次のメソッドを呼び出します。

- (void)startIconDownload:(Product *)product forIndexPath:(NSIndexPath *)indexPath
{
    ThumbDownloader *thumbDownloader = [imageDownloadsInProgress objectForKey:indexPath];
    if (thumbDownloader == nil) 
    {
        thumbDownloader = [[ThumbDownloader alloc] init];
        thumbDownloader.product = product;
        thumbDownloader.imageSizeWidth = 87;
        thumbDownloader.imageSizeHeight = 87;
        thumbDownloader.indexPathInTableView = indexPath;
        thumbDownloader.delegate = self;
        [imageDownloadsInProgress setObject:thumbDownloader forKey:indexPath];
        [thumbDownloader startDownload];
        [thumbDownloader release];   
    }
}

画像のダウンロードが完了すると、thumbdownloader クラスは、メイン クラス (listingView) の次のメソッドを呼び出します。

- (void)appImageDidLoad:(NSIndexPath *)indexPath

問題は、listingView に入り、画像のダウンロード中にすぐに離れると、アプリが次のようにクラッシュすることです。

-[listingView appImageDidLoad:]: message sent to deallocated instance 0x3beed10

ここに私のdeallocがあります

- (void)dealloc
{
    [myTable release], myTable = nil;
    [imageDownloadsInProgress release], imageDownloadsInProgress = nil;
    [spinView release], spinView = nil; 
    [mainView release], mainView = nil;
    [tableView release], tableView = nil;

    [myVs release], myVs = nil;
    [filteredVs release], filteredVs = nil;
    [toolBar release], toolBar = nil;

    [super dealloc];
}

imageDownloadsInProgress 内の Thumbdownloader インスタンスを繰り返し処理してデリゲートを nil に設定しようとしましたが、それを試みると同様にクラッシュします...次のように:

- (void)dealloc
{

    for(ThumbDownloader *thumbDownloader in imageDownloadsInProgress)
        if(thumbDownloader !=nil && thumbDownloader.delegate!=nil)
            thumbDownloader.delegate = nil;

    .....
4

1 に答える 1

0

そのコードを使用してイメージを UIImageView に設定する場合は"UIImageView+AFNetworking.h"、この問題に対して AFNetworking フレームワークのカテゴリを使用するようにしてください。設定するだけです[image setImageWithUrl:@"http://myImage"];

于 2012-09-28T13:55:27.403 に答える