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