我们首先来了解一下什么是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");
}
本文详细解释了NSRunLoop在iOS消息机制中的主要目的和作用,包括如何通过循环检测事件源、定时器等同步事件,并在适当的时候唤醒线程进行处理。通过实例展示了在子线程中如何开启NSRunLoop并利用NSTimer实现定时任务。
1563

被折叠的 条评论
为什么被折叠?



