初识
字面意思:运行循环,程序运行过程中循环处理事情.
它的实际:
实际是一个对象,这个对象提供一个入口函数,执行这个函数后,程序会进入一个do..while循环去处理一些事情.
那么问题来了,如果程序中没有RunLoop,会发生什么?我们把main.m修改为如下:
int main(int argc, char * argv[]) {
@autoreleasepool {
// return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
return 0;
}
结果:程序运行的完成之后,就会马上退出,这显然不是我们希望的结果.
RunLoop的作用:
- 保持程序的持续运行
- 处理App中的各种事件(触摸,定时器,PerformSelector)
- 节省cpu资源,提高程序性能
触摸:当我们在点击事件中打入断点可以看到
043A0E10-5126-4302-9A18-DDE9D4E5FB06.png
定时器:
[self performSelector:@selector(fire) withObject:nil afterDelay:1.0];
我们在fire中打入断点可以看到:
C3FF865A-5F56-4AB3-BD62-3EFDF2EC147B.png
GCD:
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"%s",__func__);
});
5DC5B2D7-2D7B-4169-A5EA-3691E94E82B8.png
网友评论