AFNetworking

開局一張圖剩下全靠編


12474930-ada2c7aa3d0f2360.png

目錄結(jié)構(gòu)

AFNetWorking基本上是所有iOS項(xiàng)目的標(biāo)配∨耙耄現(xiàn)在升級(jí)帶最新版的3.X了彭沼。得益于蘋果從NSURLConnection升級(jí)到NSURLSession,AFN也實(shí)現(xiàn)了api的簡(jiǎn)化,同時(shí)功能卻一點(diǎn)沒少。我們來(lái)看一下AFN3.X的目錄結(jié)構(gòu):

1、AFNetWorking 這個(gè)文件是一個(gè)頭文件权薯。啥也沒做姑躲,就是引入了其他文件方便使用。
2盟蚣、AFURLSessionManager 這個(gè)文件是核心類黍析,基本上通過(guò)它來(lái)實(shí)現(xiàn)了大部分核心功能。負(fù)責(zé)請(qǐng)求的建立屎开、管理阐枣、銷毀、安全奄抽、請(qǐng)求重定向蔼两、請(qǐng)求重啟等各種功能。他主要實(shí)現(xiàn)了NSURLSession和NSRULSessionTask的封裝逞度。
3额划、AFHTTPSessionManager 這個(gè)文件是AFURLSessionManager的子類。主要實(shí)現(xiàn)了對(duì)HTTP請(qǐng)求的優(yōu)化档泽。
4俊戳、AFURLRequestSerialization 這個(gè)主要用于請(qǐng)求頭的編碼解碼、序列化茁瘦、優(yōu)化處理品抽、簡(jiǎn)化請(qǐng)求拼接過(guò)程等储笑。
5甜熔、AFURLResponseSerialization 這個(gè)主要用于網(wǎng)絡(luò)返回?cái)?shù)據(jù)的序列化、編碼解碼突倍、序列化腔稀、數(shù)據(jù)處理等。
6羽历、AFSecurityPolicy 這個(gè)主要用于請(qǐng)求的認(rèn)證功能焊虏。比如https的認(rèn)證模式等。
7秕磷、AFNetworkReachabilityManager 這個(gè)主要用于監(jiān)聽網(wǎng)絡(luò)請(qǐng)求狀態(tài)變化功能诵闭。

AFNetwork2.0

底層是通過(guò)封裝NSURLConnection來(lái)實(shí)現(xiàn)的

2.0特點(diǎn)

-常駐線程,用來(lái)并發(fā)請(qǐng)求澎嚣,和處理數(shù)據(jù)回調(diào)疏尿;避免多個(gè)網(wǎng)絡(luò)請(qǐng)求的線程開銷(不用開辟一個(gè)線程,就币滋遥活一條線程)褥琐;
底層是通過(guò)封裝NSURLSession來(lái)實(shí)現(xiàn)的

3.0特點(diǎn)

-NSURLSession可以指定回調(diào)的delegateQueue,不用常駐線程晤郑。
-不用每次都三次握手

3.0為什么不需要常駐線程敌呈?

因?yàn)镹SURLSession可以指定回調(diào)delegateQueue贸宏,NSURLConnection而不行;
NSURLConnection的一大痛點(diǎn)就是:發(fā)起請(qǐng)求后磕洪,而需要一直處于等待回調(diào)的狀態(tài)吭练。而3.0后NSURLSession解決的這個(gè)問(wèn)題;NSURLSession發(fā)起的請(qǐng)求褐鸥,不再需要在當(dāng)前線程進(jìn)行回調(diào)线脚,可以指定回調(diào)的delegateQueue,這樣就不用為了等待代理回調(diào)方法而苯虚牛活線程了浑侥。

最大并發(fā)數(shù):

3.0需要設(shè)置最大并發(fā)數(shù)為1 self.operationQueue.maxConcurrentOperationCount = 1?

  • 串行:讓并發(fā)的請(qǐng)求晰绎,串行的進(jìn)行回調(diào)寓落;
  • 鎖:且為了防止多線程資源競(jìng)爭(zhēng)加了鎖(對(duì) self.mutableTaskDelegatesKeyedByTaskIdentifier(多任務(wù)代理) 的訪問(wèn)進(jìn)行了加鎖),本來(lái)就需要等待荞下,如果多線程并發(fā)反而造成資源浪費(fèi)伶选;

2.0為什么不需要?

  • 功能不一樣:AF3.0的operationQueue是用來(lái)接收NSURLSessionDelegate回調(diào)的尖昏,鑒于一些多線程數(shù)據(jù)訪問(wèn)的安全性考慮仰税,設(shè)置了maxConcurrentOperationCount = 1來(lái)達(dá)到串行回調(diào)的效果。
  • 而AF2.0的operationQueue是用來(lái)添加operation并進(jìn)行并發(fā)請(qǐng)求的抽诉,所以不要設(shè)置為1

總結(jié):

AFN2.0

1 陨簇、保活常駐線程原因:可以避免多個(gè)網(wǎng)絡(luò)請(qǐng)求迹淌,就要焙诱溃活多個(gè)線程;
2 唉窃、常駐線程特點(diǎn):并發(fā)請(qǐng)求耙饰,和代理回調(diào)都在同一線程(常駐線程);所以線程等待回調(diào)纹份;
3 苟跪、并發(fā)請(qǐng)求:系統(tǒng)根據(jù)情況控制最大并發(fā)數(shù);
4蔓涧、2.0的operationQueue是用于并發(fā)請(qǐng)求的件已;

AFN3.0

1 、無(wú)需常駐線程原因:因?yàn)镹SURLSession可以指定回調(diào)的delegateQueue蠢笋,NSURLConnection而不行拨齐;
2 、最大并發(fā)數(shù)設(shè)置:3.0的operationQueue是用于接收NSURLSessionDelegate回調(diào)的昨寞;
self.operationQueue.maxConcurrentOperationCount = 1瞻惋,是為了達(dá)到串行回調(diào)的效果厦滤,況且加了鎖;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末歼狼,一起剝皮案震驚了整個(gè)濱河市掏导,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌羽峰,老刑警劉巖趟咆,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異梅屉,居然都是意外死亡值纱,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門坯汤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)虐唠,“玉大人,你說(shuō)我怎么就攤上這事惰聂〗ィ” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵搓幌,是天一觀的道長(zhǎng)杆故。 經(jīng)常有香客問(wèn)我,道長(zhǎng)溉愁,這世上最難降的妖魔是什么处铛? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮叉钥,結(jié)果婚禮上罢缸,老公的妹妹穿的比我還像新娘篙贸。我一直安慰自己投队,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布爵川。 她就那樣靜靜地躺著敷鸦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寝贡。 梳的紋絲不亂的頭發(fā)上扒披,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音圃泡,去河邊找鬼碟案。 笑死,一個(gè)胖子當(dāng)著我的面吹牛颇蜡,可吹牛的內(nèi)容都是我干的价说。 我是一名探鬼主播辆亏,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鳖目!你這毒婦竟也來(lái)了扮叨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤领迈,失蹤者是張志新(化名)和其女友劉穎彻磁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狸捅,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衷蜓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尘喝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恍箭。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瞧省,靈堂內(nèi)的尸體忽然破棺而出扯夭,到底是詐尸還是另有隱情,我是刑警寧澤鞍匾,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布交洗,位于F島的核電站,受9級(jí)特大地震影響橡淑,放射性物質(zhì)發(fā)生泄漏构拳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一梁棠、第九天 我趴在偏房一處隱蔽的房頂上張望置森。 院中可真熱鬧,春花似錦符糊、人聲如沸凫海。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)行贪。三九已至,卻和暖如春模闲,著一層夾襖步出監(jiān)牢的瞬間建瘫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工尸折, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啰脚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓实夹,卻偏偏與公主長(zhǎng)得像橄浓,于是被迫代替她去往敵國(guó)和親晾咪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349