iOS巅峰之NSRunLoop

原创 2015年11月17日 16:00:55

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

iOS run loop(NSRunLoop)和线程的一些需要注意的细节

1、一个 run loop 是用来在线程上管理事件异步到达的基础设施。一个 run loop 为 线程监测一个或多个事件源。当事件到达的时候,系统唤醒线程并调度事件到 run loop,然后分配给指...
  • u014773226
  • u014773226
  • 2016年05月05日 17:55
  • 1048

iOS多线程的初步研究(三)-- NSRunLoop

原文地址  http://www.cnblogs.com/sunfrog/p/3243230.html 弄清楚NSRunLoop确实需要花时间,这个类的概念和模式似乎是Apple的平台独有(...
  • lengshengren
  • lengshengren
  • 2013年10月21日 10:37
  • 13096

使用NSRunloop等待异步任务完成

一. 代码及原理 [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFut...
  • ShangShanRuoShuidb
  • ShangShanRuoShuidb
  • 2014年03月06日 14:03
  • 1415

关于NSRunLoop深入理解和NSTimer的结合使用

一、什么是NSRunLoop NSRunLoop是消息机制的处理模式 NSRunLoop的作用在于有事情做的时候使的当前NSRunLoop的线程工作,没有事情做让当前NSRunLoop的线程休眠 ...
  • qq871531334
  • qq871531334
  • 2015年02月04日 09:48
  • 1090

控制线程(NSThread)和运行时循环(NSRunLoop)的退出

原文地址:http://shaheengandhi.com/controlling-thread-exit/ 这是讲iOS的线程的文章,下面的内容,自己都惨不忍睹啊,哈哈,翻译一下文章,尽量止步吧...
  • wzf906819823
  • wzf906819823
  • 2015年08月02日 15:15
  • 2710

NSTimer和NSRunLoop在子线程中的使用

一 : 什么是NSTimer? 官方文档说“A timer provides a way to perform a delayed action or a periodic action. The ...
  • babydavic
  • babydavic
  • 2016年10月05日 10:19
  • 4520

iOS巅峰之iOS表情转义字符使用

下面的表情可直接用右边的转义字符生成 \ue415就是表情编码。更多的表情如下: \ue415 \ue056 \ue057 ...
  • qw656567
  • qw656567
  • 2018年01月08日 15:39
  • 21

RunLoop知识点总结

RunLoop是多线程的难点. 在实际开发中我们如何使用RunLoop呢? 且容我一一道来, 不当之处, 敬请斧正. 先浏览一下RunLoop知识点的大致框架, 这也是本文即将要说明的: Ru...
  • qq_30513483
  • qq_30513483
  • 2017年02月28日 19:42
  • 331

iOS —— NSRunLoop(一)

一、NSRunLoop + (NSRunLoop *)currentRunLoop     如果调用的线程中没有runloop,那么将会创建一个并返回   + (NSRunLoop *)mainRun...
  • u013936522
  • u013936522
  • 2015年03月31日 15:12
  • 372

iOS app性能优化的那些事

iOS app性能优化的那些事  iPhone上面的应用一直都是以流畅的操作体验而著称,但是由于之前开发人员把注意力更多的放在开发功能上面,比较少去考虑性能的问题,可能这其中涉及到objective...
  • sharpyl
  • sharpyl
  • 2017年03月11日 14:40
  • 345
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS巅峰之NSRunLoop
举报原因:
原因补充:

(最多只允许输入30个字)