欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Runloop - 运行循环

发布时间:2025/4/16 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Runloop - 运行循环 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

 

参考文章

  • https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html#//apple_ref/doc/uid/10000057i-CH16-SW23
  • http://blog.ibireme.com/2015/05/18/runloop/
  • http://www.cnblogs.com/zy1987/p/4582466.html

作用

  • 通过 RunLoop 机制实现省电,流畅,响应速度快,用户体验好
  • 事件循环伪代码
function loop() {initialize();do {var message = get_next_message();process_message(message);} while (message != quit); }

特性

  • iOS 中所有的事件监听全部由运行循环负责
  • 主线程的 RunLoop 在应用启动的时候就会自动创建
  • 其他线程则需要在该线程下自己启动
  • 不能自己创建 RunLoop
  • RunLoop 并不是线程安全的,所以需要避免在其他线程上调用当前线程的 RunLoop
  • RunLoop 负责管理 autorelease pools
  • RunLoop 负责处理消息事件,即输入源事件、计时器事件和网络请求事情

应用场景

  • 创建常驻线程,执行一些会一直存在的任务。该线程的生命周期跟 App 相同
@autoreleasepool {NSLog(@"%@", [NSThread currentThread]);NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; // 只有添加端口后,才能能够保证运行循环持续运行 [runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode]; [runLoop run]; // 线程结束之前,不会执行至此 NSLog(@"%@", [NSThread currentThread]); }
  • 维护线程的生命周期,让线程不自动退出,isFinished 为 Yes 时退出
  • 在一定时间内监听某种事件,或执行某种任务的线程

转载于:https://www.cnblogs.com/chzheng/p/5949339.html

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的Runloop - 运行循环的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。