3

当我学习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委托的消息。这很奇怪。我不明白为什么。我在手册中找不到关于此的内容。你有什么想法吗?

4

0 回答 0