iphone: умный способ кэшировать большое количество изображений? - PullRequest
5 голосов
/ 05 июня 2011

У меня есть UITableView, который отображает сотни изображений, которые загружаются из Интернета.Конечно, я не хочу хранить все изображения в ОЗУ - мне нужно создать небольшой «кэш» изображений в ОЗУ и записать ненужные мне сейчас изображения на «диск».Конечно, я не хочу, чтобы этот механизм препятствовал пользовательскому интерфейсу (слишком много операций чтения и записи на диск / флэш-накопитель в главном потоке).Какой самый лучший и простой способ реализовать такую ​​вещь?Могу ли я взглянуть на какие-нибудь проекты с открытым исходным кодом, в которых используется такая вещь?

Ответы [ 3 ]

1 голос
/ 06 июня 2011

Я использовал SDWebImage Очень легко и элегантно.

1 голос
/ 05 июня 2011

Посмотрите библиотеку Three20 , особенно классы TTURLRequest, TTURLCache и TTImageView.

0 голосов
/ 05 июня 2011

У меня есть класс, который хранит UIImage в NSMutableDictionary.Если UIImage уже существует в словаре, тогда я просто возвращаю этот объект, а не создаю новый UIImage.


#import “Cache.h"
@implementation Cache

static NSMutableDictionary *dict;

+ (UIImage*)loadImageFromWeb:(NSString*)imageName{
    if (!dict) dict = [[NSMutableDictionary dictionary] retain];

    UIImage* image = [dict objectForKey:imageName];
    if (!image)
    {
        image = [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: imageName]]];
        if (image)
        {
            [dict setObject:image forKey:imageName];
        }
    }

    return image;
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...