美文网首页
2018-02-28 runloop 笔记

2018-02-28 runloop 笔记

作者: KKKKaras | 来源:发表于2018-03-12 15:49 被阅读5次

    runloop

    作用

    • 保持程序运行
    • 处理app的各种事件(比如触摸,定时器等等)
    • 节省CPU资源,提高性能。

    模型

    ・CFRunLoopRef = RunLoop
    ・CFRunLoopModeRef 是mode的属性
    ・CFRunLoopSourceRef
    ・CFRunLoopTimerRef
    ・CFRunLoopObserverRef
    ・是CFRunLoopRef的内容

    • NSRunLoop 把CFRunLoopRef进行了简单了封装
    • CFRunLoopRef 基于c语言
    Foundation
    
    [NSRunLoop currentRunLoop]; // 获得当前线程的RunLoop对象
    [NSRunLoop mainRunLoop]; // 获得主线程的RunLoop对象
    Core Foundation
    
    CFRunLoopGetCurrent(); // 获得当前线程的RunLoop对象
    CFRunLoopGetMain(); // 获得主线程的RunLoop对象
    

    应用实例
    1、当设置点击事件 延迟2秒执行时

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
    {
        [self.imageView performSelector:@selector(setImage:) withObject:[UIImage imageNamed:@"1"] afterDelay:2.0 inModes:@[NSDefaultRunLoopMode]];
    }
    

    在延迟执行的时候 进行比如textview、scrollview的滑动 会导致图片显示不出来。

    [self.imageView performSelector:@selector(setImage:) withObject:[UIImage imageNamed:@"1"] afterDelay:2.0 inModes:@[NSRunLoopCommonModes]];
    
    

    延伸

    • a.要让RunLoop跑起来,必须要给其添加一个有内容的mode。而且必须要让他Run。
    • b.RunLoop跑起来后相当于是一个while的死循环,后面的代码不会执行。

    相关文章

      网友评论

          本文标题:2018-02-28 runloop 笔记

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