前面, 咱們講完了 NSOperation 的使用, 如今讓咱們來看看在 iOS 中得一些多線程開發的注意事項.markdown
在 iOS 中, 它有一種運行機制, 叫作 Run Loop, 讓咱們來看看什麼是 Run Loop多線程
1.Run Loop提供了⼀種異步執⾏代碼的機制,不能並⾏執⾏任務.
2.在朱隊列中, Main Run Loop直接配合任務的執行, 負責處理 UI 事件, 計時器, 以及其餘內核相關事件.
3.Run Loop的主要目的是保證程序執行的線程不會被系統終止.異步
1.當有事件發⽣時,Run Loop會根據具體的事件類型通知應⽤程序作出響應
2.當沒有事件發生時,Run Loop會進⼊休眠狀態,從⽽達到省電的⽬的
3.當事件再次發生時,Run Loop會被從新喚醒,處理事件oop
主線程和其餘線程中的Run Loop
1.iOS程序的主線程默認已經配置好了Run Loop.
2.其餘線程默認狀況下沒有設置Run Loop.線程
PS: ⼀般在開發中不多會主動建立RunLoop, ⽽一般會把事件添加到RunLoop中對象
示意圖:
隊列
若是self對象持有操做對象的引⽤,同時操做對象當中又直接訪問了self時, 纔會形成循環引⽤事件
單純在操做對象中使用self不會形成循環引⽤開發
PS: 此時不能使用(weakSelf), 若是使用了 weakSelf, 那麼線程就會在沒有執行, 或者執行了一部分的時候直接退出.it
PS: 因爲 Swift 有很是嚴格的初始化方法, 而且取消了 OC 中的 dealloc方法, 因此這裏就不用代碼演示了, 你們只要知道在多線程循環引用中的一些注意事項就行了
好了, 此次就講到這裏, 下次咱們繼續~~~