美文网首页
iOS——Runloop推荐

iOS——Runloop推荐

作者: 艳晓 | 来源:发表于2017-06-28 16:30 被阅读86次

    概述

    1、Runloops和线程:
    Runloops是线程的底层基础,它的本质是线程中运行着的循环!
    2、一个Runloop:
    是一个事件处理的循环,用来不停的调度工作以及处理输入事件。
    3、使用run loop的目的:
    是让线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。
    4、Run loop的管理并不完全自动的。
    5、Cocoa 和 CoreFoundation 框架中各有完整的一套关于 runloop 对象的操作api.

    Runloop中必须知道的概念

    1、RunloopModes Runloop运行的模式
    2、RunLoop 的事件源
    |---异步的inputSources
    |---|---Port-Based Sources 基于端口的输入源
    |---|--- Custom Input sources. 自定义输入源
    |---同步的timerSources
    3、RunLoop Observers, RunLoop 运行过程中的状态观察者

    Runloop配置使用

    Cocoa框架

    // 获取当前runloop
    NSRunLoop* myRunLoop = [NSRunLoop currentRunLoop];
    NSDate* futureDate = [NSDate dateWithTimeIntervalSinceNow:1.0];
    // 创建时间源
    NSTimer* myTimer = [[NSTimer alloc] initWithFireDate:futureDate                         interval:0.1  target:self  selector:@selector(myDoFireTimer1:)                         userInfo:nil   repeats:YES]; 
    // 将时间源添加到runloop中,并设置runloopMode
    [myRunLoop addTimer:myTimer forMode:NSDefaultRunLoopMode];
    
    
    // 该方法会自动将生成的timer事件源添加到当前线程的runloop中,runloopMode是默认的NSDefaultRunLoopMode
    [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(myDoFireTimer2:)  userInfo:nil repeats:YES];
    

    CoreFoundation 框架

    // 获取当前runloop
    CFRunLoopRef runLoop = CFRunLoopGetCurrent(); 
    // 获取上下文结构
    CFRunLoopTimerContext context = {0, NULL, NULL, NULL, NULL};  
    // 创建定时器
    CFRunLoopTimerRef timer = CFRunLoopTimerCreate(kCFAllocatorDefault, 0.1, 0.3, 0, 0,  &myCFTimerCallback, &context); 
    // 将定时器添加进runloop中
    CFRunLoopAddTimer(runLoop, timer, kCFRunLoopCommonModes);
    

    苹果开发者文档:
    https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html

    翻看了几份文档翻译,发现还是这个最好!
    首选推荐:http://www.jianshu.com/p/8e40a7b16357
    这位大神同一个系列的学习笔记推荐,👍!

    这份翻译是完全根据开发文档翻译过来的,可以参考这个,同时对照开发文档自己翻译一份!
    http://www.cocoachina.com/ios/20170407/18998.html

    相关文章

      网友评论

          本文标题:iOS——Runloop推荐

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