runloop解決Cell上主執行緒卡頓

ytmaylover發表於2018-09-05

1解決cell上的主執行緒載入卡頓問題

  • 通過新增runloop 觀察者,卡頓等待的時候進行處理
  • 視訊地址

  • v.youku.com/v_show/id_X…

  • RunLoopMode 5 種mode

    runloop解決Cell上主執行緒卡頓

  • 使用 C 建立觀察者

  • 獲取當前的runloop: CFRunLoopRef runloop = CFRunLoopGetCurrent();

  • 建立觀察者

  • 引數1:分配者,NUll 或者Defaul ,引數2:活動標誌,等待前處理,引數3:重複,引數4:從0開始,引數5:監聽到的回撥函式地址,引數6:觀察者上下文,結構體指標

    runloop解決Cell上主執行緒卡頓
    runloop解決Cell上主執行緒卡頓

  • 上面引數callout,需要傳入函式的地址,觀察者,活動狀態,本文背景是等待的情況下,傳入的info

    runloop解決Cell上主執行緒卡頓

  • 新增觀察者

    runloop解決Cell上主執行緒卡頓

  • 在回撥中回去self,獲取不到,需要用上下文中的info引數傳遞,

    runloop解決Cell上主執行緒卡頓

  • 在上面回撥中處理cell中新增的任務

  • cell中的任務載入block中,將程式碼塊新增到陣列中,延遲執行

    runloop解決Cell上主執行緒卡頓

  • 將任務加入到任務陣列中

    runloop解決Cell上主執行緒卡頓

  • callback 方法中,執行任務,執行之後刪除任務

    runloop解決Cell上主執行緒卡頓

相關文章