zoukankan      html  css  js  c++  java
  • IOS runtime运行机制详解(一)

    OC运行机制是指,可以运行的时候动态调用函数。因为C语言必须在编译的时候就决定调用哪个函数。

    我们平时写的OC代码,它在运行的时候也是转换成了runtime的方式运行的。任何方法调用本质:就是发送一个消息。(用runtime发送消息,OC底层通过runtime实现)每一个OC的方法,底层必然有一个与之对应的runtime运行方法。也就是说任何方法调用,都是转换为消息机制。

    面试题:说说IOS 消息机制方法调用的过程:

    1.OC在向一个对象发送消息时,runtime库会根据对象的isa指针来找到这个对象对应的类,或者父类中查找对应的方法。

    2.注册方法编号(用编号的好处就是可以快速的查找)。

    3.根据方法编号去查找对应的方法。

    4.找到最终实现函数的地址,根据地址去方法区去调用对应的函数。

    那么,一个OC对象的isa指针指向什么?有什么作用?

    每个对象的内部都有一个isa指针,这个指针是指向他的真实类型。根据这个类的指针就能知道将来调用哪个类的方法。

    总结:

    1.每一个类本质上都是一个类的实例。其中类定义了成员变量和成员方法的列表。对象通过isa指针指向所属的类。

    2.每一个类本质上都是一个对象。类其实是元类(meteClas)的实例。元类定义了类方法的列表。类通过类isa指针指向元类。

    3.元类保存了类方法的列表。当类方法被调用的时候,会先从本身查找类方法的实现,如果没有找到,元类会向其父类查找该方法。需要注意的是,元类也是类,也是一个对象。

    4.元类通过其isa指针指向他的根元类。(root meteClass)

    5.根元类的isa指针指向了他本身。这样行程了一个封闭的内循环。

  • 相关阅读:
    linux shell 的切换
    linux:TeamViewer安装使用详解
    虚拟机与主机互ping
    每R一点:层次聚类分析实例实战-dist、hclust、heatmap等(转)
    每R一点:各种画地图,全是知识点,90%人不知道!(转)
    R语言学习路线和常用数据挖掘包(转)
    SAS PROC MCMC example in R: Logistic Regression Random-Effects Model(转)
    SparkR安装部署及数据分析实例
    R语言的导数计算(转)
    awk之随机函数rand()和srand() (转)
  • 原文地址:https://www.cnblogs.com/howlaa/p/10711625.html
Copyright © 2011-2022 走看看