美文网首页
RunLoop知识总结

RunLoop知识总结

作者: 逗憨de逗 | 来源:发表于2018-07-26 14:14 被阅读7次

1.runloop的基本作用

  • 保持程序的持续运行
  • 处理App中的各种事件(比如触摸事件、定时事件、Selector事件)
  • 节约CPU资源,提高程序性能,该做事时做事,该休息时休息

2.main文件对runloop的应用
UIApplicationMain 函数内部就启动了一个跟主线程相关联的RunLoop,所以UIApplicationMain函数一直没有返回,保持了程序的持续运行

3.有2套API来访问和使用RunLoop

  • Foundation ———— NSRunLoop
  • Core Foundation ———— CFRunLoopRef

4.runloop与线程
每条线程都有唯一的一个与之对应的runloop对象。
主线程的runloop已经自动创建好了,子线程的runloop需要主动创建
runloop在第一次获取时创建,在线程结束时销毁

  • [NSRunLoop currentRunLoop]; //获取当前线程的runloop
  • [NSRunLoop mainRunLoop];

5.runloop的 5个相关类:
CFRunLoopRef
CFRunLoopModeRef
CFRunLoopSourceRef
CFRunLoopTimerRef
CFRunLoopObserverRef

  • CFRunLoopModeRef
    代表runloop的运行模式,每次runloop启动时,只能指定其中一个mode,currentMode
    系统默认注册了5个mode,常用的是以下2个。
    KCFRunLoopDefaultMode: App的默认Mode,通常主线程是在这个Mode下运行
    UITrackingRunLoopMode: 界面跟踪mode,用于ScrollView追踪触摸滑动,保证界面滑动时不受其他mode的影响。
    NSRunLoopCommonModes :是一个标记

  • CFRunLoopTimerRef



    只是在KCFRunLoopDefaultMode状态下添加了NSTimer,其他模式下将不会调用show方法,导致所谓的“不准确”。故可以使用NSRunLoopCommonModes来替换,可以使任何模式下都能调用show方法。

通过GCD创建定时器:



  • CFRunLoopSourceRef
    是事件源(输入源)
    source0: 非基于port的,用于用户主动触发的事件
    source1:基于port的,通过内核和其它线程相互发送消息
  • CFRunLoopObserverRef
    监听runloop的状态



6.CF的内存管理
凡是带有create,copy,retain等字眼的函数,创建出来的对象,都需要在最后做一次release

7.runloop的内部处理逻辑


8.runloop的应用

  • NSTimer
  • imageView展示
  • performSelector


  • 常驻线程



  • 自动释放池
    runloop中的自动释放池什么时候创建和释放:
    第一次创建:第一次进入runloop的时候
    最后一次释放:runloop退出的时候
    其他情况:
    当runloop将要睡觉的时候会释放,并创建一个新的释放池

相关文章

  • runloop相关小结

    本文总结与runloop相关的知识点。从以下几个方面去分析runloop: runloop是什么?有什么作用 ru...

  • RunLoop知识总结

    1.runloop的基本作用 保持程序的持续运行 处理App中的各种事件(比如触摸事件、定时事件、Selector...

  • iOS知识体系总结-RunLoop

    注意:更新内容会同步到GitHub iOSWiki-知识体系总结 总结-RunLoop iOS知识点/RunLoo...

  • GeekBand - iOS 多线程和RunLoop 总结

    iOS 开发高级进阶 第三周 多线程 Runloop iOS 多线程以及 RunLoop 学习总结 基础知识 什么...

  • RunLoop 相关

    谨以此篇总结归纳记录iOS中一大知识点 RunLoop 的相关知识,以作备忘。 iOS中,提供了两种runloop...

  • iOS- Runloop浅谈

    最近项目完成年前的时间也比较轻松,对一些知识就行总结。今天总结的是Runloop.对于Runloop,在平时项目中...

  • iOS Runloop

    这里记录下iOS中Runloop相关的知识点,以备以后复习总结。 先来说下Runloop相关的概念: Runloo...

  • RunLoop总结:RunLoop基础知识

    没有实际应用场景,很难理解一些抽象空洞的东西,所以前面几篇文章先介绍了RunLoop的几个使用场景。另外Async...

  • runloop 相关知识总结

    RunLoop 即运行循环,也叫事件循环,本质为一个死循环。iOS一个程序运行起来之后,默认会开启一个运行循环,有...

  • OC--RunLoop应用例子

    知识点:1、RunLoop的基础知识2、RunLoop 与 NSTimer3、RunLoop 与 Perform ...

网友评论

      本文标题:RunLoop知识总结

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