• iOS开发-方法调用在运行时的过程


    方法调用在运行时的过程

    如果用实例对象调用实例方法,会到实例的isa指针指向的对象(也就是类对象)操作。

    如果调用的是类方法,就会到类对象的isa指针指向的对象(也就是元类对象)中操作。

    1. 首先,在相应操作的对象中的缓存方法列表中找调用的方法,如果找到,转向相应实现并执行。

    2. 如果没找到,在相应操作的对象中的方法列表中找调用的方法,如果找到,转向相应实现执行

    3. 如果没找到,去父类指针所指向的对象中执行1,2.

    4. 以此类推,如果一直到根类还没找到,转向拦截调用。

    5. 如果没有重写拦截调用的方法,程序报错。

    以上的过程给我带来的启发:

    • 重写父类的方法,并没有覆盖掉父类的方法,只是在当前类对象中找到了这个方法后就不会再去父类中找了。

    • 如果想调用已经重写过的方法的父类的实现,只需使用super这个编译器标识,它会在运行时跳过在当前的类对象中寻找方法的过程。

    来源:http://www.cocoachina.com/ios/20150901/13173.html

  • 相关阅读:
    C# 后台调用webApi
    WebApi传参详解
    网络爬虫字体解密
    单元测试的简单实用
    JQuery中$.ajax()方法参数详解
    vscode HTML标签换行问题
    C#基础之Assembly 当前项目的程序集GetAssemblies
    RedisHelper
    vue setTimeout 和 this.$nextTick,BMap api
    excel 导出 OpenXml
  • 原文地址:https://www.cnblogs.com/marshall-yin/p/4820467.html
Copyright © 2020-2023  润新知