乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      iOS中的Runloop

       求知665 2015-08-03

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

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

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

      RunLoop的主要目的:

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

      什么時候使用Runloop ?

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

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

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

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

          Runloop,正如其名所示,是線程進入和被線程用來響應(yīng)事件以及調(diào)用事件處理函數(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工作的特點:

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

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

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

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



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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多