zoukankan      html  css  js  c++  java
  • 关于 IOS Runtime Runloop 2

     Runtime 

    也就是运行时组件,一个纯C语言写的基础库。

    我们平时编写的OC代码中, 程序运行过程时, 其实最终都是转成了runtime的C语言代码 Objective-C编写出来的程序必须得到runtime的运行才能正常运行。
    NSObject的实现(其实就是和runtime做对接, 把自己连入runtime, 这样继承的子类就自动接入runtime了)

    Runtime能干吗呢?

    Runtime还允许我们通过标准的接口(C函数)对所有Objective-C类的变量、方法、属性以及协议等等          作查询和动态扩展
          Runtime 的另外一个重要的特性实现即为消息派发,objc_msgSend是消息派发最核心最基础的入口函数

    关于消息发送;下面两个方法有等同效果;
    OC : [[MJPerson alloc] init];
    runtime : objc_msgSend(objc_msgSend(“MJPerson” , “alloc”), “init”)

    isa是一个 Objective-C Class 类型的指针;实例对象有个isa的属性,指向Class;

    而Class里也有个isa的属性, 指向meteClass;

    常用的runtime方法:

    Runloop

    RunLoop 就是一个循环的概念,或者准确的说是线程中的循环 实际上就是一个继承NSObject的对象.

    NSRunLoop的作用在于有事情做的时候使的当前NSRunLoop的线程工作,没有事情做让当前NSRunLoop的线程休眠;

    每一个线程都有其对应的RunLoop,但是默认非主线程的RunLoop是没有运行的,需要为RunLoop添加至少一个事件源,然后去run它。一般情况下我们是没有必要去启用线程的RunLoop的,除非你在一个单独的线程中需要长久的检测某个事件。

     

     豆电雨 摘自 http://blog.zuics.com/

  • 相关阅读:
    《JAVA高并发编程详解》-Thread start方法的源码
    《JAVA高并发编程详解》-Thread对象的启动
    作为程序员,我建议你学会写作
    【灵异短篇】这个夜晚有点凉
    JAVA中for与while关于内存的细节问题
    通过本质看现象:关于Integer受内部初始化赋值范围限制而出现的有趣现象
    【设计模式】抽象工厂模式
    【设计模式】工厂模式
    【设计模式】单例模式
    【设计模式】基本介绍
  • 原文地址:https://www.cnblogs.com/starainDou/p/5151197.html
Copyright © 2011-2022 走看看