美文网首页
Runtimer Runloop的算法

Runtimer Runloop的算法

作者: 你美依旧 | 来源:发表于2018-04-27 09:10 被阅读0次

1   RunLoop 

Runloop 是一个循环机制 能保证程序在运行的时候不会退出 当没有事件的时候就会进入睡眠状态当有事件的时候就会唤醒 处理当前事件 当事件处理完成后 又进入睡眠状态

Runloop的运行模式

iOS 系统中提供了五种运行模式

1  NSDefaultRunLoopMode

默认状态(空闲状态),比如点击按钮都是这个状态

2 UITrackingRunLoopMode

滑动时的Mode。比如滑动UIScrollView时。

3 UIInitializationRunLoopMode

私有的,APP启动时。就是从iphone桌面点击APP的图标进入APP到第一个界面展示之前,在第一个界面显示出来后,UIInitializationRunLoopMode就被切换成了NSDefaultRunLoopMode。

4 NSRunLoopCommonModes

它是NSDefaultRunLoopMode和UITrackingRunLoopMode的集合。结构类似于一个数组。在这个mode下执行其实就是两个mode都能执行而已。

典型的应用场景这样:当前界面有开启一个NSTimer,并且滑动UIScrollView。正常开启NSTimer后,滑动UIScrollView时它是不滑动的。解决办法就是把这个timer加入到当前的RunLoop,并把RunLoop的mode设置为NSRunLoopCommonModes。这样就可以保证不管你是NSDefaultRunLoopMode里跑,还是UITrackingRunLoopMode里跑,这个timer都可以执行。

二 每个runloop中监听着三类事件

Source                         timer                 observe

三 使用runloop实现当tableview加载大量的高清图片时候卡顿

引起卡顿的原因:runloop每次循环都会Source事件中的图片渲染事件,当大量图片需要渲染的时候 主线程相当于一个耗时操作  当拖动时runloop正在处理渲染事件 不能处理拖动事件故出现界面卡顿的现象。

解决思路:1  大量图片不应该缓存下来不然会引起内存的爆满,而引起内存警告 或者崩溃

                   2 图片应该分批渲染 减小runloop的循环时间 


相关文章

  • Runtimer Runloop的算法

    1 RunLoop Runloop 是一个循环机制 能保证程序在运行的时候不会退出 当没有事件的时候就会进入睡眠...

  • RunTimer

  • Runtimer

    一:基本概念 Runtime基本是用C和汇编写的,可见苹果为了动态系统的高效而作出的努力。你可以在这里[http:...

  • iOS Run timer 简述

    一直对iOS的runtimer机制不太理解,或者是理解有偏差,趁着最近不忙,认真的研究了一下, runtimer ...

  • Runtimer小记

    一:基本概念 Runtime基本是用C和汇编写的,可见苹果为了动态系统的高效而作出的努力。你可以在这里下到苹果维护...

  • runTimer的实际应用

    简介绍 本文主要介绍自己在实际项目中,用runTimer解决的实际问题。废话不多说,直接上干货。 Part1:使用...

  • 2019 iOS面试题-----RunLoop数据结构、RunL

    RunLoop概念 RunLoop的数据结构 RunLoop的Mode RunLoop的实现机制 RunLoop与...

  • RunLoop

    RunLoop简单概述 RunLoop相关类 RunLoop逻辑处理 RunLoop实践 RunLoop简单概述 ...

  • Runtimer之消息发送

    官方文档地址官方源码地址github源码地址 这里介绍的Runtime是Modern版本对应的编程接口:Objec...

  • Runtimer之消息发送

    官方文档地址[https://developer.apple.com/library/archive/naviga...

网友评论

      本文标题:Runtimer Runloop的算法

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