我目前正在從CoreData中檢索我的UITableViewCell縮略圖圖像。這是一個2k的最大png。優化從CoreData加載的UITableViewCell縮略圖
實際上它工作正常,用戶沒有注意到任何緩慢,但我想改進避免太多CoreData請求的機制。
事實上,單元格在需要的時候被加載,這很好,但是問題是CoreData的請求總是針對要傳遞的每個單元格進行的。一種可能的解決方案是僅當表視圖停止滾動時才加載縮略圖,但是對於此解決方案,單元格顯示爲具有公共共享圖像,因爲我已經實現了prepareForReuse,它實際上重置了單元格。
那麼,有沒有簡單的方法來緩存CoreData圖像,我想在內存中,並檢索它?
我的Objective-c知識仍然有限,所以我能想到的最快解決方案是一個NSIndexPath.row-> UIImage字典(我的表沒有部分),但我不知道其他簡單優雅的解決方案可以實施。
Infact,持久存儲ie。每次你從coredata請求數據時,都不會查詢sqlite數據庫。有一種叫做coredata的錯誤機制,它在第一次獲取時緩存對象。您需要重置上下文或刷新對象以指示核心數據再次觸擊數據庫。所以,沒有問題,因爲它作爲普通對象出現故障,您只需確保重置或刷新對象的次數更少。 – Sandeep
因此,考慮到我將圖像作爲實體進行檢索,所以不需要使用任何緩存機制。在這種情況下,我最終會得到兩個緩存,我的和CoreData,會浪費更多的內存。我理解對嗎? – Leonardo
好吧,核心數據是一個永久性的緩存,你不會總是激發sql查詢只是爲了檢索幾張圖片。你會 ?此外,您使用的映像不超過2k,但如果它是較大的映像,那麼肯定保存在本地磁盤是一種更好的方法。即使將圖像保存在本地磁盤中,您也可以創建UIImage對象,然後緩存一些操作。所以,我認爲你不會付出巨大的代價。 – Sandeep