美文网首页
Runloop应用场景

Runloop应用场景

作者: FingerStyle | 来源:发表于2023-03-10 12:24 被阅读0次

Runloop 的应用场景?

  1. NSTimer定时器,本质上是runloop source, runloop在一个循环开始后就会调用runloop source(在source 0之前)。由于runloop在一个循环周期内要处理很多事情,因此NSTimer有可能不准。
  2. 线程保活,在线程开始执行后,为common mode添加一个 mach port 作为输入源,这样runloop便会一直执行下去, 于是线程不会在方法执行完后就退出。
  3. 处理滑动过程中定时器停止的问题。由于滑动时,runloop mode会自动切换到UITracking mode,而这个mode是不包含定时器事件的,因此滑动过程中定时器会停止,要解决这个问题,就需要将当前mode切换到common modes,common modes其实是一个伪模式,他里面包含了default mode和uitracking mode,因此既能处理滑动事件又能响应定时器。或者是在定时器初始化的时候就将其加入到 uitracking mode。
  4. AutoRelease pool . Autorelease pool 向runloop注册了观察者,在进入循环、退出循环以及进入休眠、从休眠唤醒的时候会进入autorelease pool的入栈、出栈的操作,以完成对象的自动释放。
  5. 基于mach port的线程间通信。比如转发子线程的消息到主线程

Runloop的输入源有哪些?

  1. Source0 , 比如触摸事件、 performSelector: onThread的事件。
  2. Source1 , 比如基于port的线程间的通信,系统事件的捕捉(触摸事件会传递给source0)
  3. 定时器,比如 NSTimer, performSelector:withObject: afterDelay(底层通过NSTimer实现)。
  4. Observers,监听runloop的状态、UI的刷新(before waiting), autorelease pool(before waiting),在RunLoop休眠之前都会去执行UI的刷新啊、Autorelease pool的释放等

Source0和Source1区别:
Source0不能主动触发事件。Source0只有一个回调(函数指针),使用时先调用 CFRunLoopSourceSignal (source)将Source 标记为待处理,然后调用 CFRunLoopWakeUp (runloop) 唤醒 RunLoop,让RunLoop处理事件。
Source1 能主动唤醒 RunLoop 的线程。Source1有一个 mach_port 和一个回调(函数指针),被用于通过内核和其他线程相互发送消息。

相关文章

  • RunLoop -- 相关问题的总结

    1、RunLoop在实际场景的应用 RunLoop -- 在实际开发中的应用 2、RunLoop内部实现逻辑 Ru...

  • runloop场景应用

    应用场景举例:主线程的 RunLoop 里有两个预置的 Mode:kCFRunLoopDefaultMode 和 ...

  • NSRunLoop

    【iOS程序启动与运转】- RunLoop个人小结 RunLoop总结:RunLoop的应用场景(三) 走进Run...

  • iOS开发经验(18)-Runloop

    目录 Runloop RunLoop 与线程 个人理解总结 应用场景 1. 什么是RunLoop 基本作用 保持程...

  • iOS RunLoop

    RunLoop 的应用场景: RunLoop在系统中应用 1.自动释放池。 2.NSTimer 3.Perform...

  • RunLoop

    详情见: iOS中的RunLoop 1、什么是RunLoop?2、开发中如何使用RunLoop?什么应用场景?3、...

  • RunLoop面试题

    1、什么是RunLoop?2、开发中如何使用RunLoop?什么应用场景?3、RunLoop和线程有什么关系?4、...

  • RunLoop应用场景

    场景一:NSTimer RunLoop有多种model,每种model下面有多个source,RunLoop的运行...

  • Runloop应用场景

    创建常驻线程,见AFNetworking; NSTimer定时器创建后需要加入到runloop的mode中才会生效...

  • 技能,RunLoop 相关

    runloop相关概念:应用场景: AFNetworking 中用于接收NSURLConnection的回调信息,...

网友评论

      本文标题:Runloop应用场景

      本文链接:https://www.haomeiwen.com/subject/zxftrdtx.html