美文网首页
iOS 添加runloop观察者

iOS 添加runloop观察者

作者: Smallwolf_JS | 来源:发表于2021-01-11 15:15 被阅读0次

    可以查看当前线程的runloop状态

    - (void)addObserver
    {
        /*
         kCFRunLoopEntry = (1UL << 0),1
         kCFRunLoopBeforeTimers = (1UL << 1),2
         kCFRunLoopBeforeSources = (1UL << 2), 4
         kCFRunLoopBeforeWaiting = (1UL << 5), 32
         kCFRunLoopAfterWaiting = (1UL << 6), 64
         kCFRunLoopExit = (1UL << 7),128
         kCFRunLoopAllActivities = 0x0FFFFFFFU
         */
        CFRunLoopObserverRef observer = CFRunLoopObserverCreateWithHandler(CFAllocatorGetDefault(), kCFRunLoopAllActivities, YES, 0, ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) {
            switch (activity) {
                case 1:
                {
                    NSLog(@"进入runloop");
                }
                    break;
                case 2:
                {
                    NSLog(@"timers");
                }
                    break;
                case 4:
                {
                    NSLog(@"sources");
                }
                    break;
                case 32:
                {
                    NSLog(@"即将进入休眠");
                }
                    break;
                case 64:
                {
                    NSLog(@"唤醒");
                }
                    break;
                case 128:
                {
                    NSLog(@"退出");
                }
                    break;
                default:
                    break;
            }
        });
        CFRunLoopAddObserver(CFRunLoopGetCurrent(), observer, kCFRunLoopCommonModes);//将观察者添加到common模式下,这样当default模式和UITrackingRunLoopMode两种模式下都有回调。
        self.obsever  = observer;
        CFRelease(observer);
    }
    

    相关文章

      网友评论

          本文标题:iOS 添加runloop观察者

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