這一篇主要講的是YYCache的DiskCache。大致流程就是 1.存:根據threshold屬性判斷所儲存的物件是檔案儲存還是資料庫儲存,不過即使是檔案儲存依舊會在資料庫中新增一行資料,記錄相關檔名和訪問時間屬性。 2.取:根據key進行資料庫檢索,獲得其檔名,然後根據檔名判斷是檔案讀取,還是資料庫讀取,假若是資料庫讀取,則會將所在列的所有key生成一個YYKVStorageItem,然後對這個item進行操作。 關於DiskCache,主要是學到關於資料庫的各種異常情況的處理。比如在存的時候,這裡會進行結果查詢的驗證。
首先會將sql語句轉換成sqlite自己標記記錄的內部資料結構。然後在內部進行快取查詢: 這樣子可以提高資料庫查詢速度。 這裡需要處理的異常是是否正確的生成了stmt物件。再比如如下程式碼:
這是關於開啟資料庫的操作,首先先加鎖,然後判斷各種狀態,首先1.判斷是否可用(當app即將被終止的時候_invalide = YES),然後2.判斷資料庫是否處於正在關閉狀態。_dbIsClosing在這裡進行YES賦值
然後3.還有判斷db是否存在。以上的這3個判斷,叫我來寫。。老實說我只會想到判斷_db是否存在。因此從這就可以學到大神的對程式的健壯性的優化思路了。