iOS中的RunLoop

來源:互聯網
上載者:User

標籤:epo   任務   efault   啟動   主線程   來講   而不是   退出   bsp   

 

iOS中的RunLoop

使用情境

 

1.保持線程的存活,而不是線性執行完任務就退出了

<1>不開啟RunLoop的線程

<2>開啟RunLoop的線程

(1)實驗用self來持有子線程

(2)實驗讓線程不結束任務導致進入死亡狀態]

(3)Event Loop模式

(4)初步嘗試使用RunLoop

(5)初體驗產生的疑問

①為什麼總是要把RunLoop和線程放在一起來講?

②如何建立RunLoop?

③線程預設不開啟RunLoop,為什麼我們的App或者說主線程卻可以一直運行而不會結束?

④RunLoop能正常啟動並執行條件是什嗎?

⑤除了[runLoop run]還有那些方法啟動RunLoop?

(6)初體驗結論

 

2.保持線程的存活後,讓線程在我們需要的時候響應訊息。

 

3.讓線程定時執行某任務(Timer)

<1>初識NSTimer遇到的坑

<2>使用NSTimer遇到的坑

<3>NSTimer導致的ViewController無法釋放問題

<4>performSelecter:afterDelay:

 

4.監聽Observer達到一些目的

關於RunLoop的釋放問題(RunLoop帶autoreleasepool的正確寫法)

<1>分析

<2>需要用while迴圈控制的RunLoop

<3>不需要用while迴圈控制的RunLoop

<4>關於主線程中autoreleasepool的題外話

 

關於子線程RunLoop切換Mode的思考

 

本文最大乾貨,子線程中類比主線程DefaultMode與TrackingMode的切換,長代碼預警

參考文檔

<1>RunLoop

<2>autoreleasepool

iOS中的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.