美文网首页
Runloop2_模式和监听事件

Runloop2_模式和监听事件

作者: edison0428 | 来源:发表于2018-08-04 00:09 被阅读18次
Runloop 官方文档
Runloop和定时器的关系

上篇文章说过,Runloop监听所有的事件中包括 时钟

NSTimer定时器要想能运行起来,,不管你是哪种方式创建定时的器,必须要将定时器添加到当前的Runloop中,有些创建的定时器默认添加到了当前的Runloop中,有些创建方法需要程序员手动添加方可运行

  • 定时器最好放在子线程里去操作,因为就算你用NSRunLoopCommonModes模式,如果定时器的执行的任务里有耗时操作,它会影响ui的处理,在子线程里用NSDefaultRunLoopMode模式即可,因为子线程不会影响主线程

详解可见之前写过的定时器文章 定时器和Runloop

常用的方法
runloop和线程有关
[NSRunLoop currentRunLoop]:获取当前线程的runloop
[NSRunLoop mainRunLoop]:获取主线程的runloop
     
[[NSRunLoop currentRunLoop] run]; 本质是个死循环
子线程中的runloop需要手动开启,在子线程中这句代码之后的执行是不会执行的,因为它是死循环

UIKit框架是否 线程安全:大部分不是安全的,如果出现了多条线程访问,就会出现资源抢夺,所以就出现一个约定,用主线程去访问ui,ui所有的操作都在主线程,如果在子线程对ui进行操作,可能会出现乱七八糟的问题
而且uikit用nonatomic 效率也高
     
所谓的常驻线程:就是在自线程里[[NSRunLoop currentRunLoop] run];
模式
  • NSDefaultRunLoopMode:默认模式
  • UITrackingRunLoopMode:简单的理解为UI模式
  • NSRunLoopCommonModes:占位符,并不是真正的runloop模式,它只是按位运算为NSDefaultRunLoopMode|UITrackingRunLoopMode
runloop的source
image.png

source是指一切事件的来源,timer也是一个source
source:事件源(输入源),按照函数调用栈分为两种事件源:source0source1
source0:非系统内核事件
source1:系统内核事件

函数调用栈:指的是函数掉用的顺序

相关文章

  • Runloop2_模式和监听事件

    Runloop 官方文档 Runloop和定时器的关系 上篇文章说过,Runloop监听所有的事件中包括 时钟 N...

  • js实现路由hash和history模式

    hash模式 hash模式是监听 hashchange 事件来实现的。 监听事件用 window.addEvent...

  • spring源码事件监听

    spring的事件监听机制,主要利用了监听者设计模式,那如何spring自带的事件和自定义的事件是如何触发监听器的...

  • laravel事件

    Laravel 事件提供了简单的观察者模式实现,允许你订阅和监听应用中的事件。 事件和监听都是阻塞式应用,如果耗时...

  • spark 中的事件总线 ListenerBus

    事件监听模式一般需要定义3种组件:事件对象,事件源,事件监听器。在spark里面事件监听由ListenerBus组...

  • laravel 之事件讲解

    Laravel 事件提供了简单的观察者模式实现,允许你订阅和监听应用中的事件。事件和监听都是阻塞式应用,如果耗时的...

  • SpringBoot--监听器解析

    监听器模式 监听器模式有要素 事件 监听器 广播器 触发机制 系统监听器 监听器 ApplicationListe...

  • 深入理解 Spring 的事件发布监听机制

    1. 什么是事件监听机制 在讲解事件监听机制前,我们先回顾下设计模式中的观察者模式,因为事件监听机制可以说是在典型...

  • SpringBoot监听器

    介绍 类名 监听器模式 参照 SpringBoot 监听器源码写的 监听天气功能,可跳过忽略 事件对象 事件监听...

  • 2015年8月31日

    java设计模式--事件监听器模式和观察者模式 - 温水青蛙 - 博客频道 - CSDN.NET http://...

网友评论

      本文标题:Runloop2_模式和监听事件

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