Кэширование больших изображений из Afnetworking

Я использую AFNetworking для загрузки некоторых изображений из Интернета в свое приложение. Я использую этот код для загрузки этих изображений,

AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:_linkString[indexPath.item]]]];
requestOperation.responseSerializer = [AFImageResponseSerializer serializer];
[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    _imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 150, 150)];
    _imageView.image = responseObject;

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Image error: %@", error);
    }];

[requestOperation start]; 

Я заметил, что все ответные изображения кэшируются на диск автоматически с помощью этого метода. Я тоже хочу эту опцию в моем приложении. Все кэшированные изображения имеют размер около 150 КБ. Но когда я загружаю образ размером около 2 МБ, эти изображения не кэшируются автоматически на диск.

Почему изображения малого размера кэшируются, а изображения большого размера не кэшируются? Я использую неправильный способ кэширования изображений в AFNetworking?

Может ли кто-нибудь дать мне решение для кэширования 2 МБ изображений, используя AFNetworking, а также....

Спасибо

1 ответ

Решение

Проблема не в AFNetworking, а в NSURLCache. По умолчанию NSURLCache не будет кэшировать файлы размером более 10% (не уверен, каков точный процент) размера кэша.

Но увеличить размер кеша поможет:

[[NSURLCache sharedURLCache] setMemoryCapacity:(20*1024*1024)];
[[NSURLCache sharedURLCache] setDiskCapacity:(200*1024*1024)];
Другие вопросы по тегам