如何理解主线程与主Runloop

发布时间:2021-10-19 09:46:50 作者:iii
来源:亿速云 阅读:105

这篇文章主要讲解了“如何理解主线程与主Runloop”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解主线程与主Runloop”吧!

Pre

基本概念

CFRunloop

  1. CFRunLoop对象监视任务的输入源,并在它们准备好进行处理时分派控制。

  2. 运行循环可以监视三种类型的对象:CFRunLoopSourceCFRunLoopTimerCFRunLoopObserver

  3. 添加到运行循环中的每个源、计时器和观察者必须与一个或多个运行循环模式相关联。

  4. Core Foundation定义了一种特殊的伪模式,称为common modes,它允许您将多个模式与给定的source、timer或observer关联起来。

  5. 每个线程只有一个运行循环。你既不创建也不销毁线程的运行循环。Core Foundation会根据需要自动为您创建它。

  6. 运行循环可以递归地运行。您可以在任何运行循环调用中调用CFRunLoopRunCFRunLoopRunInMode,并在当前线程的调用堆栈上创建嵌套的运行循环激活。

  7. Cocoa应用程序构建在CFRunLoop之上,实现它们自己的高级事件循环。在编写应用程序时,可以将源代码、计时器和观察者添加到它们的运行循环对象和模式中。然后,您的对象将作为常规应用程序事件循环的一部分被监视。使用NSRunLoop的gettcfrunloop方法可以得到对应的CFRunLoopRef类型。

NSRunloop

线程 & Runloop

先看结论!划重点!

关系分析

// 截取部分
current mode = kCFRunLoopDefaultMode,
common modes = <CFBasicHash 0x6000014e5260 [0x7fff8002e8c0]>{type = mutable set, count = 2,
entries =>
	0 : <CFString 0x7fff806610e0 [0x7fff8002e8c0]>{contents = "UITrackingRunLoopMode"}
	2 : <CFString 0x7fff801ab7e8 [0x7fff8002e8c0]>{contents = "kCFRunLoopDefaultMode"}
}

感谢各位的阅读,以上就是“如何理解主线程与主Runloop”的内容了,经过本文的学习后,相信大家对如何理解主线程与主Runloop这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. MySQL主从复制与主主复制
  2. MySQL主主(双主)数据同步

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

observer foundation runloop

上一篇:Python七月超有用的十大开源代码是什么

下一篇:JS+PHP如何实现用户注册及登录

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》