当我学习 NSURLCache 文档时,我找不到很多重要的注释。 我发现网络上的许多主题都抱怨使用 NSURLCache 的 NSURLConnection 内存泄漏。当我尝试为iOS 4.3编写一些应用程序时,我发现 MSURLCache 有一些奇怪的行为。
在 应用程序中:didFinishLaunchingWithOptions: 我设置内存容量为10MB的 NSURLCache 实例,init 使用 NSURLRequestUseProtocolCachePolicy NSURLRequest ,但我无法收到 连接:willCacheResponse: 我的 NSURLConnection 委托中的strong>消息。当我在应用程序的不同点检查内存容量时,它是0MB。为什么?可能是Apple通过将 NSURLCache 内存容量设置为0来修复内存泄漏?我创建了自定义 NSURLCache 并覆盖 setMemoryCapacity: 方法:
-(void)setMemoryCapacity:(NSUInteger)memoryCapacity {
if (memoryCapacity > 0) {
[super setMemoryCapacity:memoryCapacity];
}
else {
NSLog(@"zero here");
}
}
然后我开始调试。我的应用程序中有一些输入文本,用户放置了一些URL。新的 setMemoryCapacity: 方法已被调用两次:在我的app委托中,当我将容量设置为10MB并且(非常有趣)用户将焦点设置为文本输入时(参数 memoryCapacity 的结果为0,我在日志中收到“此处为零”字符串)。之后,我收到 连接:willCacheResponse: 消息给 NSURLConnection 委托。 这很奇怪。我不明白为什么。我无法在手册中找到关于此的内容。你有什么想法吗?