关闭

iOS巅峰之NSRunLoop

标签: iOS NSRunLoop 消息处理中心
139人阅读 评论(0) 收藏 举报
分类:

我们首先来了解一下什么是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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:21441次
    • 积分:738
    • 等级:
    • 排名:千里之外
    • 原创:53篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条