NSOperation,AFN用Operation可以實現(xiàn)
可以隨時取消已經(jīng)設(shè)定要準(zhǔn)備執(zhí)行的任務(wù),已經(jīng)執(zhí)行的除外
可以跨隊列設(shè)置操作的依賴關(guān)系
可以設(shè)置隊列中每一個操作的優(yōu)先級
最大操作并發(fā)數(shù)(GCD不好做)
繼續(xù)/暫停/全部取消
跨隊列設(shè)置操作的依賴關(guān)系
SDWebImage復(fù)用cell下載邏輯 http://www.itdecent.cn/p/bf998b2538b9
解決tableView復(fù)用錯亂問題:每次都會調(diào)UIImageView+WebCache文件中的 [self sd_cancelCurrentImageLoad];
圖片的下載操作放在一個NSOperationQueue并發(fā)操作隊列中,隊列默認(rèn)最大并發(fā)數(shù)是6
每個圖片對應(yīng)一些回調(diào)(下載進度,完成回調(diào)等),回調(diào)信息會存在downloader的URLCallbacks(一個字典,key是url地址,value是圖片下載回調(diào)數(shù)組)中,URLCallbacks可能被多個線程訪問,所以downloader把下載任務(wù)放在一個barrierQueue中,并設(shè)置屏障保證同一時間只有一個線程訪問URLCallbacks。,在創(chuàng)建回調(diào)URLCallbacks的block中創(chuàng)建了一個NSOperation并添加到NSOperationQueue中
下載的核心是利用NSURLSession加載數(shù)據(jù),每個圖片的下載都有一個operation操作來完成,并將這些操作放到一個操作隊列中,這樣可以實現(xiàn)圖片的并發(fā)下載。