2013-01-07 71 views
3

我打电话停止NSURLConnection的sendAsynchronousRequest从缓存响应

[NSURLConnection sendAsynchronousRequest:request 
            queue:queue 
         completionHandler:^(NSURLResponse * response, NSData *data, NSError *error) 

与具有的CachePolicy设置为NSURLRequestReloadIgnoringLocalCacheData

这是否调用缓存响应的请求?如果是这样,我如何确保它不会?我意识到它不会从缓存中检索任何东西,但我想确保它不会在任何地方留下任何东西。我找不到明确的答案。

回答

2

一个快速测试表明,它似乎缓存结果正常。

完全避免高速缓存的方法是实现一个NSURLConnectionDataDelegate委托,从connection:willCacheResponse:返回nil,而使用
[NSURLConnection connectionWithRequest:delegate:]发送使用委托的请求。

要测试自己是否缓存,可以尝试上述禁用缓存并在connection:willCacheReponse:中设置断点并查看是否被调用的方式。如果它被调用,请求通常会被缓存。

+0

如何使用基于块的API执行委托? – ahwulf

+0

看起来像我需要切换到使用 - (id)initWithRequest:(NSURLRequest *)请求委托:(id )委托 – ahwulf

+1

我发现这个:https://github.com/briancollins/BCURLConnection实现了异步调用对于iOS 4,但适合我的需求很有用。 – ahwulf