Swift版本 3.多執行緒開發 -- Run Loop
阿新 • • 發佈:2018-12-30
前面, 我們講完了 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中
示意圖:
3.多執行緒的迴圈引用
如果self物件持有操作物件的引⽤,同時操作物件當中又直接訪問了self時, 才會造成迴圈引⽤
單純在操作物件中使用self不會造成迴圈引⽤
PS: 此時不能使用(weakSelf), 如果使用了 weakSelf, 那麼執行緒就會在沒有執行, 或者執行了一部分的時候直接退出.
PS: 由於 Swift 有非常嚴格的初始化方法, 並且取消了 OC 中的 dealloc方法, 所以這裡就不用程式碼演示了, 大家只要知道在多執行緒迴圈引用中的一些注意事項就好了
好了, 這次就講到這裡, 下次我們繼續~~~