Если он не очень большой, вы можете загрузить его один раз и сохранить в пользовательских настройках (NSUserDefaults
) как объект NSData
.Работает для меня.
В качестве альтернативы, вы можете использовать асинхронные запросы с NSUrlConnection
и реализовывать кэширование любым удобным для вас способом.(Например, обновляйте изображение только раз в неделю.)
Более того, даже настройки кэша по умолчанию NSUrlConnection
могут работать достаточно хорошо.
Подробнее о кэшировании
edit
Пример асинхронного запроса.
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString: url]];
URLConnectionDelegate *delegate = ...;
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request
delegate:delegate];
if (!connection) {
// something went wrong
}
В делегате вам в основном нужны методы для обработки полученных данных и завершения соединения.
Предположим, у вас есть NSMutableData *receivedData
объект.
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[receivedData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
// success, do whatever you want with data
[receivedData release];
[connection release];
}
Ссылка выше и документация API предоставляют более подробную информацию о структуре делегата.