美文网首页
RunLoop学习笔记

RunLoop学习笔记

作者: 宇哥说 | 来源:发表于2017-08-30 10:26 被阅读0次

读这篇Blog:https://blog.ibireme.com/2015/05/18/runloop/

学习过程

收货比较大,写的很清晰,也举了实际Runloop使用场景
我喜欢通过对比不同语言来相互理解,事实上语言的差别是非常小的,整体的逻辑关系、实现原理没有本质区别,之前写过SWT程序(Java语言的PC界面开发库,Eclipse就是使用SWT实现的),看一下:

public static void main (String [] args) {
    Display display = new Display ();
    Shell shell = new Shell(display);
    
    Text helloWorldTest = new Text(shell, SWT.NONE);
    helloWorldTest.setText("Hello World SWT");
    helloWorldTest.pack();
    
    shell.pack();
    shell.open ();
    while (!shell.isDisposed ()) {
        if (!display.readAndDispatch ()) display.sleep ();
    }
    display.dispose ();
}

在Java的main方法中,程序启动后,如果不想main函数执行完结束,那么就要使用死循环的方式,也就是while循环实现,其中while退出条件是程序退出(PC程序不同于移动端,有关闭程序按钮),shell可以认为类似iOS中的UIWindow界面容器,shell.isDisposed ()就是是否销毁(退出)的条件
如果在while中死循环,那么CPU满负荷工作,所display.readAndDispatch ()判断当前是否在读和分发操作系统事件,如果没有,当前线程睡眠,如果有readAndDispatch,

RunLoop 的内部逻辑

RunLoop 内部的逻辑大致如下:


苹果用 RunLoop 实现的功能

AutoreleasePool
事件响应
手势识别
界面更新
定时器
PerformSelecter
关于GCD
关于网络请求

RunLoop 的实际应用举例

AFNetworking
AsyncDisplayKit

相关文章

  • RunLoop学习笔记

    本文我主要是学习如下文章做的记录,同时还有其他优秀的文章没有粘贴出来,在这里均表示感谢。iOS RunLoop入门...

  • RunLoop学习笔记

    知识点 RunLoop 实际上就是一个对象,这个对象管理了其需要处理的事件和消息,并提供了一个入口函数来执行 Ev...

  • Runloop学习笔记

    此文仅为观后笔记!!!地址:http://v.youku.com/v_show/id_XODgxODkzODI0....

  • RunLoop学习笔记

    读这篇Blog:https://blog.ibireme.com/2015/05/18/runloop/ 学习过程...

  • RunLoop学习笔记

    深入理解RunLoop 技术点: 如何管理事件/消息 没有处理消息时休眠以避免资源占用 有消息到来时立刻被唤醒 实...

  • RunLoop学习笔记

    一般来讲,一个线程一次只能执行一个任务,执行完任务后线程就会退出。如果我们需要线程随时处理任务而不退出,通常的代码...

  • RunLoop学习笔记

    什么是runloop? 一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需要一个机制,让线...

  • RunLoop学习笔记

    一.主线程RunLoop:保证App不退出 负责监听所有的事件(触摸事件)(网络事件)(定时器事件)无事件 Run...

  • RunLoop学习笔记

    参考深入理解RunLoop深入研究 Runloop 与线程保活RunLoop分享by孙源 RunLoop的概念 R...

  • RunLoop学习笔记

    在iOS开发中,会经常用到RunLoop,面试的时候更是必问的东西,RunLoop也是iOS中非常重要的东西,趁着...

网友评论

      本文标题:RunLoop学习笔记

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