AFNetWorking為何在發(fā)起請(qǐng)求時(shí)要通過(guò)runloop。(近期常見(jiàn)面試題)

最近幾天經(jīng)歷了多場(chǎng)面試,由于簡(jiǎn)歷上寫(xiě)了runloop衷蜓,跟AFNetworing的字眼累提。面試官好像特別喜歡問(wèn)這個(gè)問(wèn)題。一連幾場(chǎng)都遇到磁浇。
可惜平時(shí)開(kāi)發(fā)過(guò)程中,知識(shí)的累計(jì)跟沉淀不足斋陪。都不能回答的很好..


趁著現(xiàn)在有時(shí)間。查閱一下資料 在這里進(jìn)行一個(gè)總結(jié)置吓。无虚。

Question:AFNetworking 2.x怎么開(kāi)啟常駐子線程?為何需要常駐子線程衍锚?對(duì)應(yīng)以下代碼:

+ (void)networkRequestThreadEntryPoint:(id)__unused object {
    @autoreleasepool {
        [[NSThread currentThread] setName:@"AFNetworking"];

        NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
        [runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
        [runLoop run];
    }
}

+ (NSThread *)networkRequestThread {
    static NSThread *_networkRequestThread = nil;
    static dispatch_once_t oncePredicate;
    dispatch_once(&oncePredicate, ^{
        _networkRequestThread = [[NSThread alloc] initWithTarget:self selector:@selector(networkRequestThreadEntryPoint:) object:nil];
        [_networkRequestThread start];
    });

    return _networkRequestThread;
}

首先友题,我們要了解為何要開(kāi)啟常駐子線程?

NSURLConnection的接口是異步的戴质,然后會(huì)在發(fā)起的線程回調(diào)度宦。而一個(gè)子線程,在同步代碼執(zhí)行完成之后告匠,一般情況下戈抄,線程就退出了。那么想要接收到NSURLConnection的回調(diào)后专,就必須讓子線程至少存活到回調(diào)的時(shí)機(jī)划鸽。而AF讓線程常駐的原因是,當(dāng)發(fā)起多個(gè)http請(qǐng)求的時(shí)候戚哎,會(huì)統(tǒng)一在這個(gè)子線程進(jìn)行回調(diào)的處理漾稀,所以干脆就讓其一直存活下來(lái)。

上面說(shuō)的一般情況建瘫,子線程執(zhí)行完任務(wù)就會(huì)退出崭捍,那么什么情況下,子線程能夠繼續(xù)存活呢啰脚?這就涉及到第二個(gè)問(wèn)題了殷蛇,AF是如何開(kāi)啟常駐線程的,這里實(shí)際上考察的是runloop的基礎(chǔ)知識(shí)橄浓。

這里簡(jiǎn)單來(lái)說(shuō)粒梦,當(dāng)runloop發(fā)現(xiàn)還有source/timer/observer的時(shí)候,runloop就不會(huì)退出荸实。所以AF這里就通過(guò)給當(dāng)前runloop添加一個(gè)NSMachPort匀们,這個(gè)port實(shí)際上相對(duì)于添加了一個(gè)source事件源,這樣子線程的runloop就會(huì)一直處于循環(huán)狀態(tài)准给,等待別的線程向這個(gè)port發(fā)送消息泄朴,而實(shí)際上AF這里是沒(méi)有消息發(fā)送到這個(gè)port的重抖。

更多關(guān)于runloop的知識(shí)點(diǎn)總結(jié)可以查看這個(gè)。深入理解RunLoop

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末祖灰,一起剝皮案震驚了整個(gè)濱河市钟沛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌局扶,老刑警劉巖恨统,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異三妈,居然都是意外死亡畜埋,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)畴蒲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)悠鞍,“玉大人,你說(shuō)我怎么就攤上這事饿凛∧辏” “怎么了软驰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵涧窒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我锭亏,道長(zhǎng)纠吴,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任慧瘤,我火速辦了婚禮戴已,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锅减。我一直安慰自己糖儡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布怔匣。 她就那樣靜靜地躺著握联,像睡著了一般。 火紅的嫁衣襯著肌膚如雪每瞒。 梳的紋絲不亂的頭發(fā)上金闽,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音剿骨,去河邊找鬼代芜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛浓利,可吹牛的內(nèi)容都是我干的挤庇。 我是一名探鬼主播钞速,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼罚随!你這毒婦竟也來(lái)了玉工?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤淘菩,失蹤者是張志新(化名)和其女友劉穎遵班,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體潮改,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡狭郑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了汇在。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翰萨。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖糕殉,靈堂內(nèi)的尸體忽然破棺而出亩鬼,到底是詐尸還是另有隱情,我是刑警寧澤阿蝶,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布雳锋,位于F島的核電站,受9級(jí)特大地震影響羡洁,放射性物質(zhì)發(fā)生泄漏玷过。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一筑煮、第九天 我趴在偏房一處隱蔽的房頂上張望辛蚊。 院中可真熱鬧,春花似錦真仲、人聲如沸袋马。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)虑凛。三九已至,卻和暖如春灸眼,著一層夾襖步出監(jiān)牢的瞬間卧檐,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工焰宣, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留霉囚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓匕积,卻偏偏與公主長(zhǎng)得像盈罐,于是被迫代替她去往敵國(guó)和親榜跌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348