2013-06-03 83 views
2

我在我的應用程序中有幾個UIImageView,我使用AFNetworking的setImageWithURL從我的服務器填充圖像。該文檔說這個方法使用標準的UIImageView緩存策略。我的問題是,如果我更新我的服務器上的圖像,圖像不會很快在應用程序中更新。即使我關閉了應用程序並重新啓動。如果我想要更新圖像,我必須重新安裝應用程序,這會清除緩存並引入新圖像。顯然這對於​​用戶來說不是期望的效果。UIImageView緩存策略-AFNewtorking

AFNetworking的緩存是私有的,所以我沒有在UIImageView + AFNetworking類別中直接訪問它。關於清除整個應用程序緩存的任何想法?我將如何實現這一目標?

回答

2

您可以訪問+ (AFImageCache *)af_sharedImageCache方法,最容易的方法是將其複製到接口文件UIImageView+AFNetworking.h中。這將暴露單例NSCache子類。然後,您可以撥打– removeObjectForKey:– removeAllObjects分別移除圖像或所有圖像。

如果您不想這樣做,請考慮使用NSHTTPURLResponse對象作爲關鍵字緩存圖像。您可以通過向URL附加一些隨機值來創建不同的密鑰(例如,您可以附加?garbage=4H5G789H35G89H)。但是,這基本上會浪費內存,因爲您將緩存永遠不會被檢索的圖像。

最後,您可能想要submit an enhancement request(或自己編寫代碼)來公開緩存或使緩存可選。

+0

正是我在找的東西。謝謝 – JeffN

+0

沒問題。只是好奇,你採取了哪種方法? –

+0

在UIImageView + AFNetworking.h中創建一個名爲clearAFImageCache的方法,調用[[[self class] af_sharedImageCache] removeAllObjects],然後調用[UIImageView clearAFImageCache] – JeffN