Objective C中的快取

2021-07-05 17:51:52 字數 877 閱讀 7227

nscache可以設定數量限制,通過countlimit與 totalcostlimit來限制cache的數量或者限制cost。當快取的數量超過countlimit,或者cost之和超過totalcostlimit,nscache會自動釋放部分快取。例子如下:

可以看到,cache中只保留了最新的30條記錄。

在第二個例子中,cache嚴格的按照lru規則,清理了超出限制的舊資料。但是在文件中說明,countlimit並不是乙個嚴格的限制,如果cache數量超出了limit,那麼cache中的物件有可能立刻被清理出去,或者稍後,或者永遠都不會被清理掉,而這個時機依賴於cache的實現細節。

在使用setobject:forkey:cost:方法時,cost值只在比較容易獲取到的時候才指定,若要通過複雜的計算來獲取cost值,那使用快取的意義就不大了。

nscache是執行緒安全的,在多執行緒操作中,不需要對cache加鎖。nscache的key只是對物件的strong引用,物件不需要實現nscopying協議,nscache也不會像nsdictionary一樣複製物件。

通常,使用nscache會結合nsdiscardablecontent協議,實現了這個協議的類需要在被引用之前,必須呼叫begincontentaccess來標記為可使用的,如果在使用之前沒有呼叫beigincontentaccess,那麼就會丟擲異常。在使用結束之後,呼叫endcontentaccess,來標記它為可以被釋放的。如果實現了nsdiscardablecontent協議的物件放入了nscache中,那麼,在清除它的時候,會呼叫discardcontentifpossible方法來判斷引用狀況,沒有引用,則銷毀。

使用absolute url作為key,將快取起來。在uiimageview類中,通過單例方式,獲取afimagecache的例項。**如下:

Objective C中的callback之一

oc中的callback有四種型別 下面是第一種 nsrunloop bnrlogger.h tocrunloopa import inte ce bnrlogger nsobject property nonatomic nsdate lasttime nsstring lasttimerstri...

Objective C中的繼承

1.父類自身也可以有父類,沒有父類的類位於類層次的最頂層,稱為根類 父類也可以被稱為超類 2.繼承中,父類的非私有例項變數和方法都會成為新類定義的一部分。子類可以直接訪問這些方法和例項變數,就像在類定義中直接定義了這些子類一樣。注意 在子類使用例項變數,必須在介面部分宣告,而不是在實現部分宣告。在實...

objective c中的NSString操作

1 建立常量字串。nsstring astring this is a string 2 建立空字串,給予賦值。nsstring astring nsstring alloc init astring this is a string nslog astring astring astring re...