NSRunLoop( 消息循环 )

来源:互联网 发布:mac照片上传icloud 编辑:程序博客网 时间:2024/06/05 17:10
1. 什么是RunLoop?
  • 就是消息循环,每个线程内部都有一个消息循环;
  • 主线程默认开启消息循环, 子线程默认不开启;

2. RunLoop的目的?
  • 保证程序不会退出;
  • 负责处理事件;
  • 如果没有事件发生, 会让程序进入到休眠模式;

3. 事件类型( 输入源, 定时源 )


4.事件的使用( NSTimer )

      4.1创建 NSTimer 

  
     

     输出当前循环的模式     
      
          没有拖动界面  — — kCFRunLoopDefaultMode
          拖动界面 — —UITrackingRunLoopMode  
    
      4.2 循环常用模式
  • NSDefaultRunLoopMode 默认模式
                                   -------拖动界面,, 定时源不懂
  • NSRunLoopCommonModes 普通模式
                                           --------拖动界面,定时源不受影响

5. 使用总结
     1. 创建消息
     2. 把消息放入循环, 并指定消息的运行模式
     3. 在循环的模式匹配的时候, 消息运行

6. 子线程的消息循环

         1. 创建线程

         2. 往线程的消息循环中加入源
      3. 开启循环 ( 三种方法 )

  •   [[NSRunLoopcurrentRunLoop]run]; ——— 无法停止消息循环停止 

  • [[NSRunLoopcurrentRunLoop]runUntilDate:[NSDatedateWithTimeIntervalSinceNow:2]]; ——— 指定循环运行时间

  • BOOLshouldKeepRunning = YES;        // global —— 要声明全局变量
       
    NSRunLoop *theRL = [NSRunLoopcurrentRunLoop];
       
    while (shouldKeepRunning && [theRLrunMode:NSDefaultRunLoopModebeforeDate:[NSDatedistantFuture]]);  ———  苹果推荐使用
1 0
原创粉丝点击