利用NSCache提公升效率

2021-07-07 07:04:36 字數 1116 閱讀 4270

不過在模擬器中模擬記憶體警告時,快取不會做清理動作 為了確保接收到記憶體警告時能夠真正釋放記憶體,最好呼叫一下 removeallobjects 方法

nscache 是執行緒安全的,在多執行緒操作中,不需要對 cache 加鎖

nscache 的 key 只是做強引用,不需要實現 nscopying 協議

setobject:forkey:cost:

在快取中設定指定鍵名對應的值,並且指定該鍵值對的成本 成本 (cost) 用於計算記錄在緩衝中的所有物件的總成本

置物件並指定」成本」,成本可以自行指定

例子:快取 快取 100 張 將的」寬 * 高」當作成本,影象」畫素」 10m 當作快取成本,無論快取的多少張**,只要畫素值超過 10m,就自動清理 快取影象的時候,使用成本,比單純設定數量要科學!

(void)setobject:(id)obj forkey:(id)key cost:(nsuinteger)g;

當出現記憶體警告時,或者超出快取的總成本上限時,快取會開啟乙個**過程,刪除部分元素

例子:

解決辦法就是把nsdata物件快取起來,先從nscache裡面讀取資料,然後再從檔案系統獲取資料,提高效率。

方法如下:

步驟1:需要乙個單例的nscache,由於我們的fileutil本來就是單例的,所以只是需要在初始化fileutil的時候例項出乙個nscache就行了。

_cache = [[nscache alloc] init];
步驟2:寫檔案的時候,把nsdata存入nscache裡面

-(void)write:(nsdata*)data forkey:(nsstring*)key

);}

步驟3:讀檔案時候,先從nscache裡面讀取,如果沒有再從檔案系統中讀取。從檔案系統中讀取到的資料,再放回到nscache中。

-(nsdata*)readforkey:(nsstring*)key

nsdata *cachedata = [_cache objectforkey:key];

if(cachedata)else

return filedata;

}}

總結:通過這樣的方式,形成了 記憶體 -> 檔案系統  -> 網路 的**訪問系統。

利用NSCache提公升效率

解決辦法就是把nsdata物件快取起來,先從nscache裡面讀取資料,然後再從檔案系統獲取資料,提高效率。方法如下 步驟1 需要乙個單例的nscache,由於我們的fileutil本來就是單例的,所以只是需要在初始化fileutil的時候例項出乙個nscache就行了。cache nscache ...

利用easy install 工作效率提公升起來

編寫python指令碼前如果需要找某個庫總要搜尋引擎一翻,其實py提供更方便 快捷的方法,就是easy install 1 先安裝 setuptools 或者使用ez setup.py指令碼,安裝完後確定easy install已經在環境變數裡了,因為只有這樣才能在命令列裡直接執行easy inst...

sqlite提公升效率

前言 sqlite資料庫由於其簡單 靈活 輕量 開源,已經被越來越多的被應用到中小型應用中。甚至有人說,sqlite完全可以用來取代c語言中的檔案讀寫操作。因此我最近編寫有關遙感資料處理的程式的時候,也將sqlite引入進來,以提高資料的結構化程度,並且提高大資料的處理能力 sqlite最高支援2p...