runloop解决Cell上主线程卡顿

175 阅读1分钟

1解决cell上的主线程加载卡顿问题

  • 通过添加runloop 观察者,卡顿等待的时候进行处理
  • 视频地址

  • v.youku.com/v_show/id_X…

  • RunLoopMode 5 种mode

  • 使用 C 创建观察者

  • 获取当前的runloop: CFRunLoopRef runloop = CFRunLoopGetCurrent();

  • 创建观察者

  • 参数1:分配者,NUll 或者Defaul ,参数2:活动标志,等待前处理,参数3:重复,参数4:从0开始,参数5:监听到的回调函数地址,参数6:观察者上下文,结构体指针

  • 上面参数callout,需要传入函数的地址,观察者,活动状态,本文背景是等待的情况下,传入的info

  • 添加观察者

  • 在回调中回去self,获取不到,需要用上下文中的info参数传递,

  • 在上面回调中处理cell中添加的任务

  • cell中的任务加载block中,将代码块添加到数组中,延迟执行

  • 将任务加入到任务数组中

  • callback 方法中,执行任务,执行之后删除任务