RunLoop笔记

作者: Mr_fei | 来源:发表于2017-08-16 16:16 被阅读9次

runloop的理解:
1.runloop表面意思就是:运行循环
2.基本作用:
1。保证程序的持续运行(如果没有runloop,程序刚运行就结束)
2. runloop用于处理一些app事件(比如定时器,手势,@selector方法等)
3. runloop可以节省CPU资源,提高程序性
3.runloop在主线程中由程序自动创建,在子线程中就需要手动创建
4.每个线程对应唯一的runloop(runloop创建并不是alloc init,而是currentRunLoop,
这是懒加载形式,保证即使多次创建loop,最终返回的都是同一个loop对象),
主线程对应的runloop:[NSRunLoop mainRunLoop]
子线程的runloop:[NSRunLoop currentRunLoop]
5.runloop生命周期:从第一次获取时创建到该线程结束时摧毁
6.runloop的使用场景:
比如定时器:1.在主线程创建定时器,当界面滑动的时候,会切换到UITrackingRunLoopMode模式,定时器就会暂停,等其任务结束定时器才会恢复,解决方式就是改变loop模式
系统默认是NSDefaultRunLoopMode,将其改成NSRunLoopCommonModes
NSTimer *timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(time) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
2.在子线程创建定时器,只要保证创建一个runloop,并且在运行,那么无论是NSDefaultRunLoopMode模式还是NSRunLoopCommonModes模式都不影响结果
比如@selector方法使用:1.在主线程调用,没毛病
2.在子线程调用,xxx方法并不会调用
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self performSelector:@selector(xxx) onThread:[NSThread currentThread] withObject:nil waitUntilDone:NO];
});
- (void)xxx {

}
原因:子线程没有创建runloop,而主线程程序自动创建
解决: 创建一个runloop并且运行[[NSRunLoop currentRunLoop] run];

相关文章

  • RunLoop笔记

    runloop的理解:1.runloop表面意思就是:运行循环2.基本作用:1。保证程序的持续运行(如果没有run...

  • RunLoop笔记

    1:runloop是什么 runloop其实是一个对象,提供一个入口函数,程序启动的时候,程序就会进入一个运行循环...

  • RunLoop笔记

    学习sunny视频笔记 Why Run Loops? 使程序一直运行并接受用户输入 决定程序在何时应该处理哪些事件...

  • RunLoop笔记

    RunLoop是iOS和OSX中基本的概念,掌握RunLoop,能了解到苹果是如何利用RunLoop实现自动释放池...

  • RunLoop 笔记

    RunLoop 是 iOS 开发中非常重要的一个概念,本文是对孙源大神的视频的总结笔记与实践 命令式执行与事件驱动...

  • runloop笔记

    一、RunLoop概念 1、没有消息处理时,休眠已避免资源占用,由用户态切换到内核态 2、有消息需要处理时,立刻被...

  • runloop笔记

    runloop运行循环 目的: 保证程序不退出 负责监听所有事件硬件-->操作系统-->应用程序-->runloo...

  • 喜欢的链接

    ibireme深入理解RunLoop OneV's Den WWDC 2014 Session笔记 - iOS界面...

  • runloop详解

    关于RunLoop的解释和文章有很多,我感觉系统全面解释很好的文章并不多,本来打算整理一下关于RunLoop的笔记...

  • 2020-11-10

    runloop笔记参考:https://www.jianshu.com/p/d260d18dd551

网友评论

本文标题:RunLoop笔记

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