Цель-C: Может ли кто-нибудь предоставить пример кода о том, как инициализировать и использовать NSCache? - PullRequest
0 голосов
/ 28 июля 2011

Я хочу кэшировать свои данные PDF (отображаемые с помощью UIWebView) для повышения производительности приложения.Кажется, я не могу найти работающий код или, может быть, просто мой код не работает.Мой кеш всегда возвращает NULL.

У меня есть два контроллера вида: NavigatePDFViewController и PDFViewController.NavigatePDFViewController отображает список заголовков PDF, в котором при нажатии открывается файл PDF из Интернета.PDFViewController отображает файл PDF.

Вот шаги, которые я сделал:

1) Добавлен NSCacheDelegate на моем PDFViewController

2) Создан экземпляр NSCache какэтот.Я создал кэш NSCache * в NavigatePDFViewController.h.

cache = [[NSCache alloc]init];
[cache setDelegate:self];

3) Добавил объект в мой кеш, как этот.Полученные данные - это NSMutableData, а ссылка - это строка NSString.

[cache setObject:receivedData forKey:link];

4) Когда я проверяю содержимое моего кэша, используя приведенный ниже код, он возвращает ноль.

[cache objectForKey:link]

Что яотсутствует?Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 28 июля 2011

Документы для NSCache говорят:

Общий тип данных, хранящийся в объектах NSCache, - это объект, который реализует протокол NSDiscardableContent. Хранение этого типа объект в кеше имеет преимущества, потому что его содержимое может быть отброшено когда он больше не нужен, тем самым экономя память.

Возможно ли, что ваш receivedData реализует этот протокол? Если это так, его можно было бы удалить, и вам придется его заново создать.

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