前言:

   今年重點(diǎn)在于公司iOS架構(gòu)的梳理工作,上周整理了http請求接口管理與解耦,接下來準(zhǔn)備整理一下項(xiàng)目中的緩存處理,目前項(xiàng)目中使用的是PINCache,去年加入這個開源框架時并沒有對這個框架進(jìn)行了解,導(dǎo)致現(xiàn)在同步方式異步方式的使用存在一定的混亂情況和錯誤使用現(xiàn)象。今天重新站在使用者的角度對這個再做一次了解,以避免在后期的使用中出現(xiàn)類似以往的問題。

關(guān)于緩存:

   無論是Android還是IOS都會使用到緩存,緩存的設(shè)計(jì)方案也大致雷同(內(nèi)存緩存+磁盤緩存),內(nèi)存緩存方面Android采用LinkedHashMap,IOS采用NSDictionary,兩者都是基于Key-Value模型進(jìn)行存儲,磁盤緩存方面Android采用寫文件,IOS這邊采用歸檔操作本質(zhì)是也是寫文件。

關(guān)于PINCache

   PINCache是Pinterest的程序員在Tumblr的TMCache基礎(chǔ)上發(fā)展而來的,TMCache已經(jīng)不再維護(hù),PINCache主要的改進(jìn)是修復(fù)了dealock的bug,是一個快速,無死鎖的并行對象緩存,支持 iOS 和 OS X 系統(tǒng)。上面已經(jīng)了解到PINCache分兩層緩存(內(nèi)存緩存+磁盤緩存),內(nèi)部實(shí)現(xiàn)主要有兩個類實(shí)現(xiàn):PINMemoryCache、PINDiskCache,同時對兩者提供了同步異步調(diào)用方式,由于磁盤緩存采用的是歸檔操作,所以對自定義的對象必須實(shí)現(xiàn)NSCoding協(xié)議,PINCache除了可以按鍵取值、按鍵存值、按鍵刪值之外,還可以移除某個日期之前的緩存數(shù)據(jù)、刪除所有緩存、限制緩存大小,限制緩存對象的存活時間等。接下來看下具體使用方式。

PINCache使用

同步方式

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

    //模擬數(shù)據(jù)
    NSString *value=@"who is lcj";    //模擬一個key
    NSString *key=@"whoislcj";    //sync 同步方式    //寫入緩存    [[PINCache sharedCache] setObject:value forKey:key];    
    //判斷緩存是否存在
    BOOL containsObject =[[PINCache sharedCache] containsObjectForKey:key];
    NSLog(@"containsObject : %@", containsObject?@"YES":@"NO");  &