并發(fā)網(wǎng)絡(luò)請求工具

最近項目中出現(xiàn)一個需求.就是有可能要對成百甚至上千條數(shù)據(jù)進(jìn)行修改. 但是服務(wù)器那邊不愿意提供批量操作的接口. 只能自己實現(xiàn)了. 首先感謝AFNetworking. 因為他.我才能方便的實現(xiàn)這個需求.

先說思路吧. 手機的內(nèi)存是有限的, 我們?nèi)绻活櫤蠊?一次性創(chuàng)建大量的請求發(fā)出, 這絕對是會影響性能的. 所以我們要限制請求的最大并發(fā)數(shù),同一時間最多只能發(fā)送5個或者10個的請求, 某個請求完成了,就繼續(xù)發(fā)送下個請求.

直接上代碼.先是.h.

QQ20160612-0.png

首先我們來看看代碼:
name是該工具的名字. 方便在接下來的使用.
代理的作用是當(dāng)全部任務(wù)執(zhí)行完畢的時候告訴外面.
參數(shù)數(shù)組是用于發(fā)送請求的,可以在創(chuàng)建這個類的時候賦值,或者在之后賦值.
接下來是一個bool.該值決定是否要繼續(xù)執(zhí)行任務(wù).
最后是一個開始任務(wù)的方法,通過block執(zhí)行回調(diào).

然后是.m:


QQ20160612-1.png

這里有個manager屬性.是用于發(fā)送請求的.
然后就是在創(chuàng)建對象的時候調(diào)用一個baseSetUp方法,對manager初始化.

接下來就是具體發(fā)送請求的方法:

QQ20160612-5.png

首先判斷是否被cancel了. 是的話.就直接調(diào)用代理方法
然后再判斷參數(shù)數(shù)組的個數(shù)是否為0, 如果不是的話,就取出數(shù)組的第一個參數(shù), 使用manager發(fā)出, 在成功或者失敗的回調(diào)里面, 先把參數(shù)從數(shù)組中移除, 然后通過自身的block把參數(shù)告訴外面. 再繼續(xù)調(diào)用這個方法.
直到最后請求數(shù)組已經(jīng)為空了. 就調(diào)用代理方法告訴外界所有任務(wù)都已經(jīng)處理完畢了.

這就是這個工具類的全部了. 但是這個工具也只是實現(xiàn)了同一時間發(fā)送一個請求. 請求回來后,無論成功與否,都繼續(xù)發(fā)送下個請求. 與并發(fā)請求還差著十萬八千里呢.

所以我們需要創(chuàng)建一個管理類, 專門管理多個工具.有10個工具,我們就能同時發(fā)送10個請求了.
先是.h文件:

QQ20160614-5.png

屬性的話只有兩個,一個是最大并發(fā)數(shù),一個是代理.
然后是創(chuàng)建方法, 還有開始任務(wù),以及取消任務(wù)的方法.
代理的話,就是成功,失敗,以及所有任務(wù)完畢后的回調(diào).

然后是.m文件:

QQ20160612-8.png

屬性的話也只有兩個. 一個是用于保存工具的數(shù)組,一個是已完成任務(wù)的個數(shù).
然后是方法, 重寫了最大并發(fā)數(shù)的set方法.

然后是開始任務(wù)的時候,需要給工具派發(fā)任務(wù). 派發(fā)任務(wù)是把請求的個數(shù)平分. 當(dāng)然,最后一個工具的任務(wù)不一定平均數(shù),需要特殊處理.
派發(fā)完畢之后,就遍歷工具數(shù)組, 依次發(fā)起請求.我們再通過回調(diào)告訴外界.


QQ20160614-6.png

然后是取消任務(wù)的方法,也是遍歷,設(shè)置工具的cacel屬性為yes就可以了.
最后.當(dāng)某個工具任務(wù)執(zhí)行完畢后,就會調(diào)用工具的完成任務(wù)的回調(diào)方法. 在這里,我們做個判斷. 當(dāng)全部執(zhí)行完畢后, 再告訴外界就可以了.

QQ20160614-7.png

github上demo的地址:https://github.com/byljbdh/ALNMultipleNetworkTool

以上.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哈垢,一起剝皮案震驚了整個濱河市转锈,隨后出現(xiàn)的幾起案子缩宜,更是在濱河造成了極大的恐慌供璧,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡利花,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門盒揉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晋被,“玉大人兑徘,你說我怎么就攤上這事刚盈。” “怎么了挂脑?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵藕漱,是天一觀的道長。 經(jīng)常有香客問我崭闲,道長肋联,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任刁俭,我火速辦了婚禮橄仍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己侮繁,他們只是感情好虑粥,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宪哩,像睡著了一般娩贷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锁孟,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天彬祖,我揣著相機與錄音,去河邊找鬼品抽。 笑死储笑,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的桑包。 我是一名探鬼主播南蓬,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哑了!你這毒婦竟也來了赘方?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤弱左,失蹤者是張志新(化名)和其女友劉穎窄陡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拆火,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡跳夭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了们镜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片币叹。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖模狭,靈堂內(nèi)的尸體忽然破棺而出颈抚,到底是詐尸還是另有隱情,我是刑警寧澤嚼鹉,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布贩汉,位于F島的核電站,受9級特大地震影響锚赤,放射性物質(zhì)發(fā)生泄漏匹舞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一线脚、第九天 我趴在偏房一處隱蔽的房頂上張望赐稽。 院中可真熱鬧叫榕,春花似錦、人聲如沸姊舵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蠢莺。三九已至寒匙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間躏将,已是汗流浹背锄弱。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留祸憋,地道東北人会宪。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像蚯窥,于是被迫代替她去往敵國和親掸鹅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

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

  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,957評論 6 13
  • AFHTTPRequestOperationManager 網(wǎng)絡(luò)傳輸協(xié)議UDP拦赠、TCP巍沙、Http、Socket荷鼠、X...
    Carden閱讀 4,337評論 0 12
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理句携,服務(wù)發(fā)現(xiàn),斷路器允乐,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • iOS網(wǎng)絡(luò)架構(gòu)討論梳理整理中矮嫉。。牍疏。 其實如果沒有APIManager這一層是沒法使用delegate的蠢笋,畢竟多個單...
    yhtang閱讀 5,188評論 1 23
  • 你站在星空之下, 讀不懂這世界的變化鳞陨。 有誰能走進(jìn)你昨寞, 走進(jìn)你的心, 許你一世繁華炊邦, 陪你编矾,看盡落日流霞熟史, 陪你馁害,...
    米何閱讀 521評論 4 7