iOS巅峰之NSRunLoop

来源:互联网 发布:南风知我意 txt下载 编辑:程序博客网 时间:2024/04/26 09:08

我们首先来了解一下什么是NSRunLoop
1.NSRunLoop是IOS消息机制的处理模式

NSRunLoop的主要目的:保证程序执行的线程不会被系统终止。

NSRunLoop的主要作用:控制NSRunLoop里面线程的执行和休眠,在有事情做的时候使当前NSRunLoop控制的线程工作,没有事情做让当前NSRunLoop的控制的线程休眠。

2.NSRunLoop 就是一直在循环检测,从线程start到线程end,检测inputsource(如点击,双击等操作)同步事件,检测timesource同步事件,检测到输入源会执行处理函数,首先会产生通知,corefunction向线程添加runloop observers来监听事件,意在监听事件发生时来做处理。 3.runloopmode是一个集合,包括监听:事件源,定时器,

我们在使用NSTimer的时候,可能会接触到runloop的概念,下面是一个简单的例子:

#pragma mark - 开辟子线程        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{       // NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(change:) userInfo:@"哈哈" repeats:YES];        self.timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(change:) userInfo:@"哈哈" repeats:YES];             [self.timer fire];#pragma mark - 在子线程中,开启NSRunLoop, 子线程中NSRunLoop默认是关闭的       [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
- (void)change:(NSTimer *)time
{
    NSLog(@"执行了time");
}
0 0