iOS RunLoop簡介,iosrunloop簡介

來源:互聯網
上載者:User

iOS RunLoop簡介,iosrunloop簡介
一、什麼是RunLoop?

RunLoop是運行迴圈

基本作用:1、保持程式的持續運行 2、處理App中的各種事件(比如觸摸事件、定時器事件、Selector事件)3、節省CPU資源,提高程式效能:該做事時做事,該休息時休息。

 

 

 

 

二、RunLoop的基礎

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

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

  RunLoop在第一次擷取時建立,線上程結束時銷毀。

  2.1獲得RunLoop對象

  1、Foundation

  [NSRunLoop currentRunLoop]; // 獲得當前線程的RunLoop對象

  [NSRunLoop mainRunLoop]; // 獲得主線程的RunLoop對象

 

  2、Core Foundation

  CFRunLoopGetCurrent(); // 獲得當前線程的RunLoop對象

  CFRunLoopGetMain(); // 獲得主線程的RunLoop對象

 

  2.2 Core Foundation中關於RunLoop的5個類

  CFRunLoopRef、CFRunLoopModeRef、CFRunLoopSourceRef、CFRunLoopTimerRef、CFRunLoopObserverRef

  2.2.1 CFRunLoopModeRef代表RunLoop的運行模式

  一個 RunLoop 包含若干個 Mode,每個Mode又包含若干個Source/Timer/Observer

  每次RunLoop啟動時,只能指定其中一個 Mode,這個Mode被稱作 CurrentMode

  如果需要切換Mode,只能退出Loop,再重新指定一個Mode進入

  這樣做主要是為了分隔開不同組的Source/Timer/Observer,讓其互不影響

  • 系統預設註冊了5個Mode:
  • kCFRunLoopDefaultMode:App的預設Mode,通常主線程是在這個Mode下運行
  • UITrackingRunLoopMode:介面跟蹤 Mode,用於 ScrollView 追蹤觸摸滑動,保證介面滑動時不受其他 Mode 影響
  • UIInitializationRunLoopMode: 在剛啟動 App 時第進入的第一個 Mode,啟動完成後就不再使用
  • GSEventReceiveRunLoopMode: 接受系統事件的內部 Mode,通常用不到
  • kCFRunLoopCommonModes: 這是一個佔位用的Mode,不是一種真正的Mode
  • CFRunLoopSourceRef是事件來源(輸入源)
  • 以前的分法
  • Port-Based Sources
  • Custom Input Sources
  • Cocoa Perform Selector Sources
  • 現在的分法
  • Source0:非基於Port的
  • Source1:基於Port的
  • CFRunLoopTimerRef是基於時間的觸發器
  • 基本上說的就是NSTimer
  • CFRunLoopObserverRef是觀察者,能夠監聽RunLoop的狀態改變
  • 可以監聽的時間點有以下幾個

   

 

三、RunLoop處理邏輯

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.