不過在模擬器中模擬記憶體警告時,快取不會做清理動作 為了確保接收到記憶體警告時能夠真正釋放記憶體,最好呼叫一下 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...