美文网首页
iOS监听RunLoop的状态改变

iOS监听RunLoop的状态改变

作者: 爱吃萝卜的小蘑菇 | 来源:发表于2017-09-04 16:27 被阅读149次
    //1.创建监听者
    /*
     第一个参数:怎么分配存储空间
     第二个参数:要监听的状态 kCFRunLoopAllActivities 所有的状态
     第三个参数:时候持续监听
     第四个参数:优先级 总是传0
     第五个参数:当状态改变时候的回调
     */
    CFRunLoopObserverRef observer = CFRunLoopObserverCreateWithHandler(CFAllocatorGetDefault(), kCFRunLoopAllActivities, YES, 0, ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) {
        
        /*
         kCFRunLoopEntry = (1UL << 0),        即将进入runloop
         kCFRunLoopBeforeTimers = (1UL << 1), 即将处理timer事件
         kCFRunLoopBeforeSources = (1UL << 2),即将处理source事件
         kCFRunLoopBeforeWaiting = (1UL << 5),即将进入睡眠
         kCFRunLoopAfterWaiting = (1UL << 6), 被唤醒
         kCFRunLoopExit = (1UL << 7),         runloop退出
         kCFRunLoopAllActivities = 0x0FFFFFFFU
         */
        switch (activity) {
            case kCFRunLoopEntry:
                NSLog(@"即将进入runloop");
                break;
            case kCFRunLoopBeforeTimers:
                NSLog(@"即将处理timer事件");
                break;
            case kCFRunLoopBeforeSources:
                NSLog(@"即将处理source事件");
                break;
            case kCFRunLoopBeforeWaiting:
                NSLog(@"即将进入睡眠");
                break;
            case kCFRunLoopAfterWaiting:
                NSLog(@"被唤醒");
                break;
            case kCFRunLoopExit:
                NSLog(@"runloop退出");
                break;
                
            default:
                break;
        }
    });
    
    /*
     第一个参数:要监听哪个runloop
     第二个参数:观察者
     第三个参数:运行模式
     */
    CFRunLoopAddObserver(CFRunLoopGetCurrent(),observer, kCFRunLoopDefaultMode);
    
    //NSDefaultRunLoopMode == kCFRunLoopDefaultMode
    //NSRunLoopCommonModes == kCFRunLoopCommonModes

相关文章

  • iOS监听RunLoop的状态改变

  • CFRunloopObserverRef 的简单介绍

    CFRunloopObserverRef是观察者,能够监听runloop状态的改变。 监听的步骤:1.创建监听者 ...

  • CFRunLoopObserverRef 类

    CFRunLoopObserverRef是观察者,能够监听RunLoop的状态改变 可以监听的时间点有以下几个:可...

  • 监听网络

    ios 注册通知、监听 iOS-OC-监听网络状态,有网时数据自动刷新 iOS实时监控网络状态的改变 简书 iOS...

  • Runloop -运行循环的简单介绍

    一、特性 iOS中所有的事件监听全部是由Runloop负责监听的,main线程的Runloop在应用启动的时候就会...

  • RunLoop -- CFRunLoopObserverRef

    有的时候我们也会自己创建一些Observer去监听RunLoop的状态RunLoop的状态 接下来,监听一下Run...

  • iOS底层-- RunLoop

    手动目录RunLoop 6大响应事件RunLoop 与线程的关系RunLoop状态监听RunLoop 数据结构Ru...

  • iOS:NSRunLoop浅析

    监听RunLoop的状态 RunLoop的一些说明: 一个 RunLoop 包含若干个 Mode,每个 Mode ...

  • RunLoop

    - 保证线程不退出- 负责监听事件!iOS触摸,时钟,网络每条线程都有一个runloop,但是默认都是不开启的状态...

  • iOS RunLoop 监听

    当在主线程刷新页面过于频繁时,容易造成页面卡顿,这时候需要监听主线程的RunLoop,在RunLoop空闲时再去处...

网友评论

      本文标题:iOS监听RunLoop的状态改变

      本文链接:https://www.haomeiwen.com/subject/cupejxtx.html