1

フィールドを持つtableViewがありUIImageViewます。セッターsetupCellから呼び出されるメソッドで設定します。set_bookセッターは から呼び出されtableView:willDisplayCell:forRowAtIndexPath:ます。setupCell の一部を次に示します。

dispatch_queue_t downloadImage = dispatch_queue_create("Download Image", NULL);
    dispatch_async(downloadImage, ^{
        NSString* key = [_book.internalID stringByAppendingPathExtension:@"thumb"];
        UIImage* thumb = [[[LTImagesCacheController shared] cache] objectForKey:key];
        if (thumb == nil)
        {
            dispatch_async(dispatch_get_main_queue(), ^{
                _bookImageView.layer.borderWidth = 0.0;
                _bookImageView.image = [[LTImageProvider sharedImagesProvider] imageForName:@"DefaultBook.png" cache:YES];
            });

            NSString* imageName = [[LTImagesCacheController cacheDir] stringByAppendingPathComponent:key];
            if([[NSFileManager defaultManager] fileExistsAtPath:imageName])
            {
                NSDictionary *attr = [NSDictionary dictionaryWithObjectsAndKeys:[NSDate date], NSFileModificationDate, nil];
                [[NSFileManager defaultManager] setAttributes:attr ofItemAtPath:imageName error:nil];
                thumb = [UIImage imageWithContentsOfFile:imageName];
                [[[LTImagesCacheController shared] cache] setObject:thumb forKey:key];
            }
            else
            {
                NSString* url = _book.coverURL;
                thumb = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]];
                if (thumb != nil)
                    [[[LTImagesCacheController shared] cache] setObject:thumb forKey:key];
            }
        }

        if (thumb != nil)
        {
            dispatch_async(dispatch_get_main_queue(), ^{
                _bookImageView.layer.borderWidth = 1.0;
                _bookImageView.image = thumb;
            });
        }
    });
dispatch_release(downloadImage);

アプリを実行すると、UI が 1 秒未満の短い時間フリーズすることがあります。私は何を間違っていますか?DefaultBook.pngをデフォルトに設定したいので、_book.coverURLの画像があれば設定します。100 ~ 200 個のセルがあり、サムネイル画像のサイズは 15 ~ 30 KB です。

4

0 に答える 0