天天看點

iOS多線程簡介 - 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中

示意圖:

iOS多線程簡介 - Swift版本 3.多線程開發 -- Run Loop
iOS多線程簡介 - Swift版本 3.多線程開發 -- Run Loop

3.多線程的循環引用

如果self對象持有操作對象的引⽤,同時操作對象當中又直接通路了self時, 才會造成循環引⽤

單純在操作對象中使用self不會造成循環引⽤

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

PS: 由于 Swift 有非常嚴格的初始化方法, 并且取消了 OC 中的 dealloc方法, 是以這裡就不用代碼示範了, 大家隻要知道在多線程循環引用中的一些注意事項就好了

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

轉載于:https://www.cnblogs.com/iOSCain/p/4529331.html

繼續閱讀