RunLoop -- 概念

2020-04-11  本文已影响0人  踩坑小分队

RunLoop

如果没有RunLoop,程序运行起来,执行完相关东西加结束了

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
    }
    return 0;
}

如果有RunLoop,程序运行起来之后,不会挂,会一直等待指令的输入,然后处理
伪代码:

int main(int argc, char * argv[]) {
    
    @autoreleasepool {
        int retValue = 0;
        do {
            // 睡眠中等待消息
            int message = sleepAndWait();
            // 收到消息干活
            retValue = processMessage(message)
        } while (retValue == 0);
    }
    return 0;
}
作用
应用:
RunLoop对象

iOS中有2套访问RunLoop的对象
Foundation 框架:NSRunLoop对象
Core Foundation:CFRunLoopRef

NSRunLoop和CFRunLoopRef都代表着RunLoop对象.
NSRunLoop对象是基于CFRunLoopRef的一层OC的包装

CFRunLoopRef有开源的代码<新建一个空项目,将内容添加到项目中查看>
CFRunLoopRef源码地址


image.png
上一篇下一篇

猜你喜欢

热点阅读