當前位置:首頁 » 文件管理 » sdwebimage緩存機制

sdwebimage緩存機制

發布時間: 2025-02-01 00:02:55

① 中高級IOS開發程序員要具備哪些能力和技能

一、數據加密必備技能-密碼學
在網路加速發展的時代,數據安全已經是一個必不可少的技術課題。如何讓用戶數據、網路數據、內容數據安
全可靠,也是每個開發者需要深思並捍衛的。熟練掌握密碼學原理,了解 MD5 演算法、非對稱、對稱加密演算法底 層實現,以及如何運用到項目開發中。讓開發者實力捍衛數據安全!
1.密碼的起源歷史
2.Base 64 編碼格式、散列函數
3.MD5 &加鹽、HMAC加密
4.對稱加密演算法
5.RSA Openssl、數字簽名
二、RunLoop
RunLoop是iOS和OS X中非常基礎的一個概念,在開發中不常用,在面試中也幾乎是都會問到的一個問題.對RunLoop的概念以及底層實現原理,都是我們應該要掌握的,並且要知道在開發中哪些地方可以使用到RunLoop。
1.能理解RunLoop概念
2.知道RunLoop的使用方式
3.RunLoop在開發中的使用
三、Runtime
OC 縱橫 iOS 開發已經多年,但是我們真的了解他們?他到底是怎麼樣的一個底層原理?在使用上難道就真的只有
這樣?我們該如何更加掌握這門語言的應用?另外 OC 能做到的 Swift 也能做到嗎?
1.runtime 到底是什麼
2.runtime 怎麼運用
3.runtime 怎麼運用
4.siwft 中如何使用runtime
四、SDWebImage源碼的分析
在開發中, 為了提高工作的效率, 我們大都會引入很多的框架, 覺得只要能能完成自己的工作達到目的就行, 當然這沒錯,但是確忽略了很多好框架中的編程思想,和實現的邏輯, 只知道使用框架, 不知道它裡面的精髓, 長遠來說對我們的發展是不好的, 所以讓我們從經典的框架開始學起,一起來學習SDWebImage的精髓.
1.SDWebImage的demo的分析
2.SDWebImage緩存的概念
3.下載超時和圖片的格式區分
4.SDWebImage的清理機制和內存的監聽
五、H264編碼
扎克伯格說「視頻是未來facebook社交的最重要的行為之一」。作為開發而言,我們應該了解視頻如何做到編碼。在直播平台編碼的技術也是頻頻使用,讓我們從業務層跨往視頻編碼底層的第一步。
1.了解直播項目的架構以及技術突破點;
2.視頻組成原理
3.H264文件的結構
4.軟編碼和硬編碼的區別以及應用場景
5.硬編碼的原理
6.使用硬編碼編碼視頻文件
7.H264解碼的多種處理方式
六、AAC編碼
直播、音視頻項目已經是iOS 應用類的APP的中堅力量。解密音頻編碼過程,讓開發者不在對編碼諱莫如深。映客、全名K歌、網易雲音樂等等知名APP都會用到的音頻AAC編碼方式。
1.了解聲音從模擬信號到數字信號的原理
2.PCM編碼解析
3.AAC編碼原理
4.AAC文件的結構
5.音頻在軟編碼FFmpeg 和 硬編碼的區別
6.利用硬編碼編碼音頻
7.捕獲媒體數據,如何區分音視頻數據
8.利用FFmpeg 合成 H264文件和AAC文件到MP4容器中

② 談一談NSCache

NSCache介紹

NSCache是蘋果提供的一套緩存機制,與NSMutableDictionary可變字典的用法類似,常見於一些第三方庫,比如AFNetworking,SDWebImage。

使用場景:通常用使用緩存來臨時存儲短時間使用但創建昂貴的對象,優化性能,避免這些對象的多次創建 。

NSCache和NSMutableDictionary的區別

1、NSCache是線程安全的,不需要加線程鎖,而NSMutableDictionary線程不安全州神,多線程訪問和操作,需要我們自己設置管理。

2、NSCache的內存由系統管理,當內存不足時,NSCache會自動釋放內存。

3、NSCache可以設置緩存對象數量和佔用的內存大小,當緩存超出了設置,會自動釋放內存。

4、NSCache是Key-Value的數據結構,其中key是強引用,不實現NSCoping協議,作為key的對象不會被拷貝。

下面介紹NSCache的屬性、方法、代理

屬性

countLimit: 能夠緩存對象的最大數量,默認值是0,沒有限制(限制是不精/不嚴格的)。 totalCostLimit: 設置緩存佔用的內存大小(限制是不精/不啟跡猜嚴格的)。

: 是否回收廢棄內容,默認YES。

方法

setObject: forKey: 緩存對象。

setObject: forKey: cost: 緩存對象,並指定key值對應的成本,用於計算緩存中所有對象的總成本。

objectForKey: 通過key獲得緩存對象。

removeObjectForKey: 刪除指定對象removeAllObjects: 刪除所有緩存對象

代理(NSCacheDelegate)

willEvictObject: 緩存對象即將被清理時調用,一般開發者用來調試,不能在此方法中修改緩存

以下場景會被調用:

1、 removeObjectForKey

2、緩存對象超過NSCache的countLimit和otalCostLimit屬性設置的限制

3、App進入後台

4、系統發出內存警告

5、cache這個實例的生命周期結束前

NSCache注意點

1、當收到內存警告,而我們又調用removeAllObjects,則無法再繼續往緩存中添加數據。

-(void)didReceiveMemoryWarning{

[super didReceiveMemoryWarning];

// 當收到內存警告,在悄型這里清除緩存

[self.cache removeAllObjects];

// 如果再繼續添加數據的話 會直接被刪除

}

2、不提供緩存總的大小,想知道NSCache佔用的內存大小,只有通過添加緩存的cost自己計算。

3、NSCache自動釋放內存的演算法是不確定的, 有時是按照LRU(最近最久未使用)釋放,有時隨機釋放。

4、NSCache中的數據在APP重啟後會消失,因為NSCache只是將數據保存在內存。

熱點內容
wifi共享精靈源碼 發布:2025-02-01 02:40:15 瀏覽:970
java軟體怎麼安裝 發布:2025-02-01 02:40:09 瀏覽:546
河北稅務局電子密碼是什麼 發布:2025-02-01 02:40:07 瀏覽:832
檢查伺服器設置是什麼意思 發布:2025-02-01 02:31:26 瀏覽:182
神偷四第四章密碼是多少 發布:2025-02-01 02:07:29 瀏覽:12
qq登錄在哪個文件夾 發布:2025-02-01 01:57:59 瀏覽:624
如何加入安卓代理 發布:2025-02-01 01:51:40 瀏覽:2
我的世界手游伺服器刷鑽石教程 發布:2025-02-01 01:48:13 瀏覽:773
sqlifthen男女 發布:2025-02-01 01:44:59 瀏覽:690
幻靈和安卓哪個互通 發布:2025-02-01 01:43:33 瀏覽:648