本文主要是介绍iOS Runloop面试题(RunLoop概念),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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 Runloop面试题(RunLoop概念)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!