CSURLCache
предназначен для кэширования ресурсов для автономного просмотра, так как NSURLCache
хранит только данные в памяти.
Если cachedResponse
автоматически освобожден до возврата приложения, происходит сбой, если нет, объекты просто просочились.
Любой свет, который мог бы пролиться на это, был бы очень признателен.
Обратите внимание, stringByEncodingURLEntities
- это метод категории NSString
.
@interface CSURLCache : NSURLCache {} @end
@implementation CSURLCache
- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request
{
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:[[[request URL] absoluteString] stringByEncodingURLEntities]];
if ([[NSFileManager defaultManager] fileExistsAtPath:path])
{
NSData *data = [[NSData alloc] initWithContentsOfFile:path];
NSURLResponse *response = [[NSURLResponse alloc] initWithURL:[request URL]
MIMEType:nil
expectedContentLength:[data length]
textEncodingName:nil];
NSCachedURLResponse *cachedResponse = [[NSCachedURLResponse alloc] initWithResponse:response
data:data];
[response release];
[data release];
return cachedResponse;
}
return nil;
}
@end
ОБНОВЛЕНИЕ : После отправки радара в Apple выясняется, что это известная проблема (Radar # 7640470).