1. 程式人生 > >Swift版本 3.多執行緒開發 -- Run Loop

Swift版本 3.多執行緒開發 -- Run Loop

前面, 我們講完了 NSOperation 的使用, 現在讓我們來看看在 iOS 中得一些多執行緒開發的注意事項.

1.Run Loop

在 iOS 中, 它有一種執行機制, 叫做 Run Loop, 讓我們來看看什麼是 Run Loop

1.Run Loop提供了⼀種非同步執⾏程式碼的機制,不能並⾏執⾏任務.
2.在朱佇列中, Main Run Loop直接配合任務的執行, 負責處理 UI 事件, 計時器, 以及其他核心相關事件.
3.Run Loop的主要目的是保證程式執行的執行緒不會被系統終止.

2.Run Loop特點

1.當有事件發⽣時,Run Loop會根據具體的事件型別通知應⽤程式做出響應
2.當沒有事件發生時,Run Loop會進⼊休眠狀態,從⽽達到省電的⽬的
3.當事件再次發生時,Run Loop會被重新喚醒,處理事件

主執行緒和其他執行緒中的Run Loop
1.iOS程式的主執行緒預設已經配置好了Run Loop.
2.其他執行緒預設情況下沒有設定Run Loop.

PS: ⼀般在開發中很少會主動建立RunLoop, ⽽通常會把事件新增到RunLoop中

示意圖:
1

2

3.多執行緒的迴圈引用

如果self物件持有操作物件的引⽤,同時操作物件當中又直接訪問了self時, 才會造成迴圈引⽤

單純在操作物件中使用self不會造成迴圈引⽤

PS: 此時不能使用(weakSelf), 如果使用了 weakSelf, 那麼執行緒就會在沒有執行, 或者執行了一部分的時候直接退出.

PS: 由於 Swift 有非常嚴格的初始化方法, 並且取消了 OC 中的 dealloc方法, 所以這裡就不用程式碼演示了, 大家只要知道在多執行緒迴圈引用中的一些注意事項就好了

好了, 這次就講到這裡, 下次我們繼續~~~