YTKNetwork觀后感

request基本設(shè)計(jì)

1 把通過(guò) [[YTKNetworkConfig sharedConfig] addUrlFilter:filter]; 把公共參數(shù)保存在YTKNetworkConfig 單例里面(在構(gòu)建URL的時(shí)候從單例取出)。
2 把請(qǐng)求頭請(qǐng)求參數(shù)以及成功失敗block都保存在request類(lèi)(主要做model用,此類(lèi)不做數(shù)據(jù)處理)。
3 request使用start調(diào)用 [[YTKNetworkAgent sharedAgent] addRequest:request]
4 [[YTKNetworkAgent sharedAgent] addRequest:request]此函數(shù)主要是構(gòu)建URL并使用AFNetworking生成一個(gè)NSURLSessionTask實(shí)例給request。然后保存在一個(gè)字典里(以NSURLSessionTask的taskIdentifier為key保存了request)。
5 當(dāng)NSURLSessionTask回調(diào)后在字典里根據(jù)taskIdentifier找到request然后調(diào)用對(duì)應(yīng)的成功失敗block。

總結(jié)一下,里面是把request類(lèi)做model,YTKNetworkAgent做請(qǐng)求動(dòng)作了。

斷點(diǎn)續(xù)傳(大致上跟上面差不多,只是有一點(diǎn)區(qū)別);

1 給request設(shè)置個(gè)保存路徑。
2 當(dāng)request有保存路徑時(shí)候,YTKNetworkAgent從tmp的Incomplete目錄取出上次下載的數(shù)據(jù)創(chuàng)建一個(gè)downloadTask。
3 當(dāng)失敗的時(shí)候,把下載的數(shù)據(jù)放在tmp目錄的Incomplete下(命名規(guī)則是用md5)。
4 當(dāng)所有數(shù)據(jù)都下載好了,回調(diào)成功block。

YTKBatchRequest

其實(shí)就是把幾個(gè)request封裝在YTKBatchRequest的一個(gè)array里面。然后在YTKBatchRequest對(duì)array里面的request都調(diào)用start請(qǐng)求。當(dāng)其中有一個(gè)回調(diào)失敗的時(shí)候在YTKBatchRequest取消其他requset回調(diào),并調(diào)用YTKBatchRequest的失敗block。而當(dāng)其中一個(gè)回調(diào)成功的時(shí)候,則成功的計(jì)數(shù)加1。當(dāng)成功計(jì)數(shù)跟array數(shù)目一樣多的時(shí)候,調(diào)用YTKBatchRequest的成功block。

YTKChainRequest

跟YTKBatchRequest差不多,只是在array里面上一個(gè)request成功回調(diào)后才調(diào)用下一個(gè)request。

參考

https://github.com/yuantiku/YTKNetwork/tree/2.0.4

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容