2013-01-07 101 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