前面, 我們講完了 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方法, 是以這裡就不用代碼示範了, 大家隻要知道在多線程循環引用中的一些注意事項就好了
好了, 這次就講到這裡, 下次我們繼續~~~
轉載于:https://www.cnblogs.com/iOSCain/p/4529331.html