iOS中的消息循环


什么是消息循环:

消息循环就是NSRunloop这个类 ,每个线程都有自己的消息循环。

主线程的消息循环默认是开启的(需要去检测事件),子线程默认关闭(通常不需要子线程检测事件)。

消息循环的目的:

保证程序不退出、负责处理输入事件(输入源和Timer源)、如果没有事件发生则会让程序处于休眠状态。

消息循环的两种运行模式:NSDefaultRunloopModel和 NSRunloopCommonModels

消息循环需要在一定的模式下才能相匹配,当在消息循环中添加了一个定时源时, 消息循环的模式必须和定时源的模式相匹配才能执行:

在主线程中:

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

/*当时用当前模式NSDefaultRunLoopMode时,当在UI上触发可见事件时,模式就发生了改变则定时源中的方法不运行了

将模式改为NSRunloopCommonModels时,定时源中的方法正常执行, 因为该模式下包含了两个底层的模式。

*/

在子线程中需要开启消息循环的方法:

//直接开启消息循环

[[NSRunLoop currentRunLoop] run];

//开启到什么时间
[[NSRunLoop currentRunLoop]runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2.0]];

优质内容筛选与推荐>>
1、android 服务器
2、hdu1166(单点更新,区间求和)
3、【NOI2007T1】社交网络-Floyd求最短路
4、java进程的守护进程脚本
5、类的概念


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号