久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

iOS中的Runloop

 嘆落花 2015-07-03

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

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

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

RunLoop的主要目的:

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

什么時候使用Runloop ,?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多