RunLoop
文章平均质量分 75
RunLoop底层分析
Holothurian
千里之行跬步起、江海之成小流积。有志始知蓬莱近、无为总觉咫尺远。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
5、RunLoopRun底层原理
开篇一张调用栈图、内容为填充1、CFRunLoopRunSpecific函数解析1. 通知 Observers: RunLoop 即将进入 Loop。 10.通知 Observers: RunLoop 即将退出。 SInt32 CFRunLoopRunSpecific(CFRunLoopRef rl, CFStringRef modeName, CFTimeInterval seconds, Boolean returnAfterSourceHandled) { /* DOES..原创 2021-05-24 22:03:41 · 457 阅读 · 0 评论 -
4、CFRunLoopObserverRef与CFRunLoopSourceRef
1. 通知的常规使用- (void)runLoopMode{ [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(getNotificationNotify:) name:@"HereIsTheNotificaton" object:nil]; } - (void)getNotificationNotify:(NSNotification *)notify{ NSLog(@"notify: ...原创 2021-05-24 21:54:54 · 552 阅读 · 2 评论 -
3、RunLoop对象和Mode
通过 CFRunLoopGetMain函数的分析可以看到、获取main函数RunLoop返回对象的时候使用的是 CFRunLoopRef、 根据 CFRunLoopRef 查找得到 __CFRunLooptypedef struct CF_BRIDGED_MUTABLE_TYPE(id) __CFRunLoop * CFRunLoopRef; 3.查找 __CFRunLoop 的定义处得到其结构体。struct __CFRunLoop { CFRuntimeBase _base;...原创 2021-05-24 21:46:28 · 517 阅读 · 2 评论 -
2、RunLoop与线程的关系
打印输出 CFRunLoopGetMain()、可以 看到若干信息在源码中分析 CFRunLoopGetMain函数CFRunLoopRef CFRunLoopGetMain(void) { CHECK_FOR_FORK(); //判断当前是否为 main函数 static CFRunLoopRef __main = NULL; // no retain needed if (!__main) __main = _CFRunLoopGet0(pthread_main...原创 2021-05-24 21:35:58 · 370 阅读 · 0 评论 -
1、RunLoop应用简介
一、RunLoop源码准备阶段RunLoop是由CFRunLoop封装而成。在苹果开放文档下载 https://opensource.apple.com/tarballs/CF/ 只能下载到对应macOS 10.10.5系统的源码。 下载分析CF-1153.18中的CFRunloop.h和CFRunLoop.c二、RunLoop解释运行循环:让线程能随时处理事件但并不退出,通常的代码逻辑是这样的:function loop() {initialize();do {...原创 2021-05-24 21:31:21 · 444 阅读 · 2 评论
分享