美文网首页
7-4 RunLoop 与多线程

7-4 RunLoop 与多线程

作者: Rumbles | 来源:发表于2019-04-13 21:32 被阅读0次

1.RunLoop与线程的联系:

RunLoop与线程是一一对应的关系
线程创建的时候并没有RunLoop对象
RunLoop会在第一次获取它的时候创建,调用[NSRunLoop currentRunLoop]获取RunLoop
RunLoop保存在一个全局的Dictionary中,key是线程,value是RunLoop
主线程在启动的时候,会自动获取RunLoop对象
子线程默认没有开启RunLoop
RunLoop会在线程结束时候销毁

2.如何保证线程的常驻

dispatch_async(dispatch_get_global_queue(0, 0), ^{
        NSTimer * timer = [NSTimer timerWithTimeInterval:1.f repeats:YES block:^(NSTimer * _Nonnull timer) {
            static int count = 0;
            [NSThread sleepForTimeInterval:1];
            //休息一秒钟,模拟耗时操作
            NSLog(@"%s - %d",__func__,count++);
        }];
        [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
        
        //子线程需要手动开启Runloop
        [[NSRunLoop currentRunLoop] run];
    });

[NSRunLoop currentRunLoop]  如果没有的话系统会给我们自动创建子线程的NSRunLoop

3.更新数据时如何保证不打断用户的滑动操作

当用户滑动的时候,当前的RunLoop运行在trackingMode模式下,我们可以把子线程抛会主线程更新UI这段逻辑封装到主线程的defaultMode下
这样抛回来的任务当用户滑动的时候,就不会执行打断用户滑动;当滑动结束后,主线程切回到defaultMode就可以执行更新UI数据。

[self performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO modes:@[NSDefaultRunLoopMode]];

Runloop常驻线程

相关文章

  • 7-4 RunLoop 与多线程

    1.RunLoop与线程的联系: 2.如何保证线程的常驻 3.更新数据时如何保证不打断用户的滑动操作 Runloo...

  • RunLoop

    概念 数据结构 事件循环机制 RunLoop 与 NSTimer RunLoop 与多线程 一、概念 RunLoo...

  • ios面试题

    runtime介绍 runLoop与多线程关系 多线程原理(GCD、NSOperation) AFNetworki...

  • RunLoop的使用

    RunLoop是什么? 它有什么作用?Runloop和多线程又是什么关系?timer 与 Runloop 有什么关...

  • RunLoop其实没有我们想的那么难

    目录一、纯纯的RunLoop(上小菜)二、RunLoop与多线程相结合使用(上大菜) 一、纯纯的RunLoop(上...

  • GeekBand - iOS 多线程和RunLoop 总结

    iOS 开发高级进阶 第三周 多线程 Runloop iOS 多线程以及 RunLoop 学习总结 基础知识 什么...

  • iOS 多线程:『RunLoop』详尽总结

    本文用来介绍 iOS 多线程中,RunLoop 的相关知识。主要包括如下内容:RunLoop 简介RunLoop ...

  • 22.iOS底层学习之多线程原理

    本篇提纲:1、线程与进程2、多线程3、多线程相关面试题4、线程安全问题5、线程与runloop的关系 线程与进程 ...

  • Runloop与多线程

    线程是和runloop一一对应的。自己创建的线程默认是没有runloop的。 思考 怎样实现一个常驻线程? 代码实...

  • Runloop与多线程

    怎样保证子线程数据回来更新UI的时候不打断用户的滑动操作? 用户滑动操作时runloop是运行在kCFRunLo...

网友评论

      本文标题:7-4 RunLoop 与多线程

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