日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

iOS中的Runloop

 求知665 2015-08-03

    Runloop是事件接收和分發(fā)機(jī)制的一個(gè)實(shí)現(xiàn)。

    Runloop提供了一種異步執(zhí)行代碼的機(jī)制,不能并行執(zhí)行任務(wù)。

    在主隊(duì)列中,Main RunLoop直接配合任務(wù)的執(zhí)行,負(fù)責(zé)處理UI事件、定時(shí)器以及其他內(nèi)核相關(guān)事件。

RunLoop的主要目的:

    保證程序執(zhí)行的線程不會(huì)被系統(tǒng)終止。   

什么時(shí)候使用Runloop ?

    當(dāng)需要和該線程進(jìn)行交互的時(shí)候才會(huì)使用Runloop.

    每一個(gè)線程都有其對(duì)應(yīng)的RunLoop,但是默認(rèn)非主線程的RunLoop是沒(méi)有運(yùn)行的,需要為RunLoop添加至少一個(gè)事件源,然后去run它。

    一般情況下我們是沒(méi)有必要去啟用線程的RunLoop的,除非你在一個(gè)單獨(dú)的線程中需要長(zhǎng)久的檢測(cè)某個(gè)事件。

    主線程默認(rèn)有Runloop。當(dāng)自己?jiǎn)?dòng)一個(gè)線程,如果只是用于處理單一的事件,則該線程在執(zhí)行完之后就退出了。所以當(dāng)我們需要讓該線程監(jiān)聽(tīng)某項(xiàng)事務(wù)時(shí),就得讓線程一直不退出,runloop就是這么一個(gè)循環(huán),沒(méi)有事件的時(shí)候,一直卡著,有事件來(lái)臨了,執(zhí)行其對(duì)應(yīng)的函數(shù)。

    Runloop,正如其名所示,是線程進(jìn)入和被線程用來(lái)響應(yīng)事件以及調(diào)用事件處理函數(shù)的地方。需要在代碼中使用控制語(yǔ)句實(shí)現(xiàn)run loop的循環(huán),也就是說(shuō),需要代碼提供while 或者 for循環(huán)來(lái)驅(qū)動(dòng)run loop。

    在這個(gè)循環(huán)中,使用一個(gè)Runloop對(duì)象[NSRunloop currentRunloop]執(zhí)行接收消息,調(diào)用對(duì)應(yīng)的處理函數(shù)。

    Runloop接收兩種源事件:input sources和timer sources。

    input sources 傳遞異步事件,通常是來(lái)自其他線程和不同的程序中的消息;

    timer sources(定時(shí)器) 傳遞同步事件(重復(fù)執(zhí)行或者在特定時(shí)間上觸發(fā))。

    除了處理input sources,Runloop 也會(huì)產(chǎn)生一些關(guān)于本身行為的notificaiton。注冊(cè)成為Runloop的observer,可以接收到這些notification,做一些額外的處理。(使用CoreFoundation來(lái)成為runloop的observer)。

Runloop工作的特點(diǎn):

    1> 當(dāng)有事件發(fā)生時(shí),Runloop會(huì)根據(jù)具體的事件類型通知應(yīng)用程序作出響應(yīng);

    2> 當(dāng)沒(méi)有事件發(fā)生時(shí),Runloop會(huì)進(jìn)入休眠狀態(tài),從而達(dá)到省電的目的;

    3> 當(dāng)事件再次發(fā)生時(shí),Runloop會(huì)被重新喚醒,處理事件。

提示:一般在開(kāi)發(fā)中很少會(huì)主動(dòng)創(chuàng)建Runloop,而通常會(huì)把事件添加到Runloop中。



    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多