美文网首页
NSRunloop 认识

NSRunloop 认识

作者: 蝼蚁撼树 | 来源:发表于2016-11-16 14:54 被阅读0次

timer和runloop

runloop的模式分为5种

系统默认定义了多种运行模式(CFRunLoopModeRef),如下:
kCFRunLoopDefaultMode:App的默认运行模式,通常主线程是在这个运行模式下运行
UITrackingRunLoopMode:跟踪用户交互事件(用于 ScrollView 追踪触摸滑动,保证界面滑动时不受其他Mode影响)
UIInitializationRunLoopMode:在刚启动App时第进入的第一个 Mode,启动完成后就不再使用
GSEventReceiveRunLoopMode:接受系统内部事件,通常用不到
kCFRunLoopCommonModes:伪模式

- (void)viewDidLoad {
   [super viewDidLoad];

   // 定义一个定时器,约定两秒之后调用self的run方法
   NSTimer *timer = [NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(run) userInfo:nil repeats:YES];

   // 将定时器添加到当前RunLoop的NSDefaultRunLoopMode下
   [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
}

- (void)run
{
   NSLog(@"---run");
}

当滑动scrollview时timer的run方法就停止调用,因为当前的mode为default模式,当交互时需要开启tracking模式,但是,不滑动时,run方法停止调用.现在如果要求在滑动,还有没用用户交互时都可以正常的调用run方法,就需要制定runloop模式为Common模式.因为common为标记模式,defaul和tracking方法都被标记为Common模式

NSTimer 还有另外一种写法

[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(run) userInfo:nil repeats:YES];

相当于下面两句

NSTimer *timer = [NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(run) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];

如果是要指定两种模式下都可以运行时,用第一种方式指定timer的运行方式.

文章引用来源

相关文章

  • NSRunloop 认识

    timer和runloop runloop的模式分为5种 系统默认定义了多种运行模式(CFRunLoopModeR...

  • 认识NSRunLoop

    看过很多NSRunLoop的讲解,很枯燥,扯理论,真的不容易理解NSRunLoop其实就像是个监听器。。检查输入源...

  • NSRunLoop认识(二)

    一.这里先提一点 : NSRunloop 的执行流程 二.网上找的伪代码 三.Source Source 包含 :...

  • NSRunLoop认识(一)

    一.NSRunloop的基本认识 主线程Runlopp 从App开启,就一直存在(在main函数中初始化). 主线...

  • NSRunloop的简单认识

    - (void)viewDidLoad { [super viewDidLoad]; // Do any addi...

  • NSRunLoop作用

    NSRunLoop是IOS消息机制的处理模式 NSRunLoop的主要作用:控制NSRunLoop里面线程的执行和...

  • NSRunLoop

    NSRunLoop--NSRunLoop是IOS消息机制的处理模式,控制NSRunLoop里面线程的执行和休眠,在...

  • NSRunLoop 详解

    1.NSRunLoop是IOS消息机制的处理模式 NSRunLoop的主要作用:控制NSRunLoop里面线程的执...

  • NSRunLoop详解

    1.NSRunLoop是IOS消息机制的处理模式 NSRunLoop的主要作用:控制NSRunLoop里面线程的执...

  • 关于NSRunLoop和NSTimer的深入理解

    一、什么是NSRunLoop NSRunLoop是消息机制的处理模式。 NSRunLoop的作用在于有事情做的时候...

网友评论

      本文标题:NSRunloop 认识

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