美文网首页iOS面试收藏ios
iOS Runloop面试题(RunLoop概念)

iOS Runloop面试题(RunLoop概念)

作者: 程序员_秃头怪 | 来源:发表于2019-08-03 13:41 被阅读4次

    RunLoop概念

    RunLoop是通过内部维护的事件循环(Event Loop)来对事件/消息进行管理的一个对象。

    1、没有消息处理时,休眠已避免资源占用,由用户态切换到内核态(CPU-内核态和用户态)
    2、有消息需要处理时,立刻被唤醒,由内核态切换到用户态

    为什么main函数不会退出?

    int main(int argc, char * argv[]) {
        @autoreleasepool {
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
    }
    

    UIApplicationMain内部默认开启了主线程的RunLoop,并执行了一段无限循环的代码(不是简单的for循环或while循环)

    //无限循环代码模式(伪代码)
    int main(int argc, char * argv[]) {        
        BOOL running = YES;
        do {
            // 执行各种任务,处理各种事件
            // ......
        } while (running);
    
        return 0;
    }
    

    UIApplicationMain函数一直没有返回,而是不断地接收处理消息以及等待休眠,所以运行程序之后会保持持续运行状态。

    面试题持续整理更新中,需要拿到第一手大厂面试题及答案文档可以添加 iOS进阶学习交流群:551346706 !结实人脉、讨论技术你想要的这里都有!

    相关文章

      网友评论

        本文标题:iOS Runloop面试题(RunLoop概念)

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