笔记 RunLoop

作者: 失忆的程序员 | 来源:发表于2023-03-14 11:10 被阅读0次

什么是RunLoop?

从字面上理解,RunLoop是个运行循环。
其实它内部就是do-while循环,在这个循环内部不断的处理各种任务(比如Source\Timer\Observer)
一个线程对应一个RunLoop,主线程的RunLoop默认已经启动,子线程的RunLoop需要手动启动(调用run方法)
RunLoop只能选择一个mode启动,如果当前mode中没有任何Soure\Timer\Observer,那么就直接退出RunLoop

在开发中如何使用RunLoop?什么应用场景?

场景一:解决NSTimer在ScrollView滑动的时候失效的问题

static int count = 0;
[NSTimer scheduledTimerWithTimeInterval:1 >repeats:YES >block:^(NSTimer * _Nonnull timer) {
  NSLog(@"count == %d",count++);
}];

原因:
NSTimer在RunLoop的mode是NSDefaultRunLoopMode中的,当滑动的时候RunLoop会切换到UITrackingRunLoopMode,所以NSTimer会失效。
解决:
将Timer添加到NSRunLoopCommonModes模式下面

NSTimer *timer = [NSTimer timerWithTimeInterval:1 >repeats:YES block:^(NSTimer * _Nonnull timer) {
  NSLog(@"count == %d",count++);
}];
 
[[NSRunLoop currentRunLoop] addTimer:timer >forMode:NSRunLoopCommonModes];

线程和runloop是一一对应的关系,内部是一个字典,key为线程,value为runloop
参考

相关文章

  • RunLoop笔记

    runloop的理解:1.runloop表面意思就是:运行循环2.基本作用:1。保证程序的持续运行(如果没有run...

  • RunLoop笔记

    1:runloop是什么 runloop其实是一个对象,提供一个入口函数,程序启动的时候,程序就会进入一个运行循环...

  • RunLoop笔记

    学习sunny视频笔记 Why Run Loops? 使程序一直运行并接受用户输入 决定程序在何时应该处理哪些事件...

  • RunLoop笔记

    RunLoop是iOS和OSX中基本的概念,掌握RunLoop,能了解到苹果是如何利用RunLoop实现自动释放池...

  • RunLoop 笔记

    RunLoop 是 iOS 开发中非常重要的一个概念,本文是对孙源大神的视频的总结笔记与实践 命令式执行与事件驱动...

  • runloop笔记

    一、RunLoop概念 1、没有消息处理时,休眠已避免资源占用,由用户态切换到内核态 2、有消息需要处理时,立刻被...

  • runloop笔记

    runloop运行循环 目的: 保证程序不退出 负责监听所有事件硬件-->操作系统-->应用程序-->runloo...

  • 喜欢的链接

    ibireme深入理解RunLoop OneV's Den WWDC 2014 Session笔记 - iOS界面...

  • runloop详解

    关于RunLoop的解释和文章有很多,我感觉系统全面解释很好的文章并不多,本来打算整理一下关于RunLoop的笔记...

  • 2020-11-10

    runloop笔记参考:https://www.jianshu.com/p/d260d18dd551

网友评论

    本文标题:笔记 RunLoop

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