AFNetworking與SDWebImage簡單闡述

1、AFNetworking 底層原理分析

AFNetworking主要是對NSURLSession和NSURLConnection(iOS9.0廢棄)的封裝,其中主要有以下類:
1). AFHTTPRequestOperationManager:內部封裝的是 NSURLConnection, 負責發送網絡請求, 使用最多的一個類。(3.0廢棄)
2). AFHTTPSessionManager:內部封裝是 NSURLSession, 負責發送網絡請求,使用最多的一個類。
3). AFNetworkReachabilityManager:實時監測網絡狀態的工具類。當前的網絡環境發生改變之後,這個工具類就可以檢測到。
4). AFSecurityPolicy:網絡安全的工具類, 主要是針對 HTTPS 服務。

5). AFURLRequestSerialization:序列化工具類,基類。上傳的數據轉換成JSON格式
(AFJSONRequestSerializer).使用不多。
6). AFURLResponseSerialization:反序列化工具類;基類.使用比較多:
7). AFJSONResponseSerializer; JSON解析器,默認的解析器.
8). AFHTTPResponseSerializer; 萬能解析器; JSON和XML之外的數據類型,直接返回二進
制數據.對服務器返回的數據不做任何處理.
9). AFXMLParserResponseSerializer; XML解析器;

2、描述下SDWebImage裏面給UIImageView加載圖片的邏輯

SDWebImage 中爲 UIImageView 提供了一個分類UIImageView+WebCache.h, 這個分類中有一個最常用的接口sd_setImageWithURL:placeholderImage:,會在真實圖片出現前會先顯示佔位圖片,當真實圖片被加載出來後再替換佔位圖片。

加載圖片的過程大致如下:
1.首先會在 SDWebImageCache 中尋找圖片是否有對應的緩存, 它會以url 作爲數據的索引先在內存中尋找是否有對應的緩存
2.如果緩存未找到就會利用通過MD5處理過的key來繼續在磁盤中查詢對應的數據, 如果找到了, 就會把磁盤中的數據加載到內存中,並將圖片顯示出來
3.如果在內存和磁盤緩存中都沒有找到,就會向遠程服務器發送請求,開始下載圖片
4.下載後的圖片會加入緩存中,並寫入磁盤中
5.整個獲取圖片的過程都是在子線程中執行,獲取到圖片後回到主線程將圖片顯示出來

SDWebImage原理:
調用類別的方法:
1. 從內存(字典)中找圖片(當這個圖片在本次使用程序的過程中已經被加載過),找到直接使用。
2. 從沙盒中找(當這個圖片在之前使用程序的過程中被加載過),找到使用,緩存到內存中。
3. 從網絡上獲取,使用,緩存到內存,緩存到沙盒。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章