美文网首页
Runloop —运行循环

Runloop —运行循环

作者: Again_lcl | 来源:发表于2017-12-19 09:36 被阅读8次

    Runloop目的:

    1.保住线程的生命

    2.负责监听事件:触摸事件,NSTimer,网络

    在ViewController里添加一个UITextView和一个计数循环NSTimer:

    当拖拽UITextView的时候计数NSTimer停止打印,一松开就断续打印,相信大家都有遇到过这样的问题


    这个问题的原因就是在于NSRunloop的模式:

    /*

    Runloop的模式:

    NSDefaultRunLoopMode 默认模式

    UITrackingRunLoopMode UI模式

    NSRunLoopCommonModes 占位模式(拥有默认模式和UI模式 弥补两者的不足)

    */

    计数NSTimer是处于默认模式,而UITextView是处于UI模式。

    UI模式是高于默认模式的,所以当Runloop发现有UI模式的事件时会优先处理UI模式下的事件,当一松开UI模式事件结束,接着才是默认模式下的事件. 

     另外,UI模式下,只有触摸才能处理事件,意思是讲如果你想把计数NSTimer的Runloop模式改成UI模式,只有当我触摸UI的时候才会处理你的计数事件,当我松开时,UI模式下事件已结束,计数事件不执行。

    如果想计数NSTimer不在外环境的继续打印用第三个模式,占位模式(拥有默认模式和UI模式 弥补两者的不足)

    相关文章

      网友评论

          本文标题:Runloop —运行循环

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