你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 關於RunLoop

關於RunLoop

編輯:IOS開發綜合

這篇文章為您講述關於RunLoop的文章,具體方法請看介紹

首先我們要先認識一下這個RunLoop;

NSRunLoop是Cocoa框架中的類,與之的Core Fundation 中CFRunLoopRef類.

這兩者的區別是,前者不是線程安全的,而後者是線程安全的.

RunLoop的應用

一般我們不需要創建或者顯示啟動RunLoop,有兩種情況,我們需要必須手動設置它:

在分線程中使用定時器

定時器的實現便是基於RunLoop的,平時我們使用定時器或許沒有對RunLoop做什麼操作,那是因為主線程RunLoop默認是啟動運行的, 如果我們在子線程中也需要重復執行某一個動作,就需要手動進行操作添加

[[NSRunLoop currentRunLoop]run];

每條線程都有唯一的一個與之對應的RunLoop對象

主線程的RunLoop已經自動創建好了,子線程的RunLoop需要主動創建

RunLoop在第一次獲取時創建,在線程結束時銷毀

作用:

a.保持程序的持續運行(IOS程序為什麼能一直存活)

b.處理APP中的各種事件(比如觸摸事件,定時器事件NSTimer,selector事件[performSelector)

c.節省CPU資源,提高程序性能,有事情就做事情,沒事情就休息.

如果沒有RunLoop,那麼程序以啟動就會退出,什麼事情都做不了.

如果有了RunLoop,那麼相當於在內部有了一個死循環,能夠保證程序的持續運行

RunLoop更強大的地方在於對消息的監聽,因為CFRunLoopRef的線程安全優勢,我們通常會更多使用後者。

輸入源被注冊進Runloop中時會有方法進行remove,但是定時器卻沒有,但是定時器中的invalidate方法可以將其從runloop中移除,正如官方文檔的說明:invalidate是重要也是唯一的可以將定時器從runloop的注銷的方法,所以如果我們創建了定時器,就一定要在不使用時調用invalidate方法.

多多關注本站,我們將為您收集更多的Android開發相關文章.

【關於RunLoop】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved