前言:

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

關(guān)于緩存:

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

關(guān)于PINCache

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

PINCache使用

同步方式

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

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

網(wǎng)友評(píng)論