2013-07-17 22 views
0

我一直有一個問題,無論我用什麼框架緩存我的圖像,從AFNetworking到SDWebImage的緩存技術寫入磁盤。每次我按主頁按鈕,然後回到應用程序。它像所有的圖像必須被緩存。緩存圖像不會停留一旦applicationDidEnterBackground被激活

我不知道從哪裏開始尋找

爲了同時使用AFNetworking對我的正常的網絡功能,如JSON和我用https://gist.github.com/sibljon/5957892解決命名衝突,所以我冷完全覆蓋AFNetworkings的UIImageView和棒圖像上傳與SDWebImage因此而不是調用

感謝jonsibleyhis answer我不叫

[imageFile setImageWithURL:[NSURL URLWithString:friendAvatar] placeholderImage:[UIImage imageNamed:@"defaultProfileImage.png"]];

即時呼叫(現在只是一個SD_),它允許我重寫AFNetworkings緩存。正確?

[imageFile SD_setImageWithURL:[NSURL URLWithString:friendAvatar] placeholderImage:[UIImage imageNamed:@"defaultProfileImage.png"]];

編輯UDPATE:

經過一番更多的測試,我發現,應用程序被清除緩存一旦恢復應用程序,而不是當它開始變得暫停(當按下home鍵) 任何線索可能會導致此?

回答

3

這裏有兩種可能性。請注意清除r磁盤和清除n磁盤之間的區別。

  1. SDWebImage在收到後調用cleanDisk。此方法刪除比其到期日期早的文件。之後,它會將文件從最舊到最新清除,直到達到配置的最大緩存大小。

    如果您未設置SDImageCache的maxCacheSize屬性,則忽略此屬性。

    如果您未設置SDImageCache的maxCacheAge屬性,則默認爲604800秒(1周)。

  2. 你有沒有在你的應用程序中調用SDWebImage的clearDiskclearMemory方法?如果是這樣,請在它們上設置斷點以找到在簡歷中調用的原因。

  3. 如果#1沒有解釋它,並且你永遠不會調用「清除」方法,那麼最好的辦法是在[SDImageCache -cleanDisk]中設置一個斷點並逐步瞭解它,看看爲什麼你的緩存被清除。
+0

總是你與我一起拯救和緩存這些問題。好的,我現在就給這個鏡頭看看會發生什麼。 –

+0

我放了幾個斷點基本上到處都有一個乾淨/清除緩存方法調用,並沒有一個按下home按鈕並返回到應用程序時,我沒有任何地方在我手動調用它的代碼。並且所有設置都在原始設置 –

+0

如果斷點沒有被擊中,'UIApplicationWillTerminateNotification'可能不會觸發 - 請參閱http:// stackoverflow。com/q/7370853/1445366,以使其在模擬器中啓動 –

相關問題