美文网首页
jspatch原理简析

jspatch原理简析

作者: Adam_潜 | 来源:发表于2019-01-07 19:20 被阅读6次
  1. startEngine函数中, 给jscontext定义了一个方法
context[@"_OC_defineClass"] = ^(NSString *classDeclaration, JSValue *instanceMethods, JSValue *classMethods) {
        return defineClass(classDeclaration, instanceMethods, classMethods);
    };
  1. 这个定义会在jspatch.js里面被运行
  2. 这个方法里面运行了defineClass
  3. 这个defineClass里面把所有demo.js里面的需要重载的方法都遍历一次
  4. 每次遍历的时候, 吧原来的方法给加到新的imp上(前缀ORIG)
  5. 然后再把原来的selector给换了, 换成_objc_msgForward, 这个_objc_msgForward函数的作用是: 当对象没有实现某个方法 ,会调用这个函数进行方法转发。 因此这些方法找不到了, 就全都转发给forwardInvocation了.
  6. 然后再hookforwardInvocation方法, 吧这个方法换成静态JPForwardInvocation方法,
  7. 在JPForwardInvocation中, 把根据selector的名字找到之前js中的代码, 运行这些代码.

相关文章

  • jspatch原理简析

    在startEngine函数中, 给jscontext定义了一个方法 这个定义会在jspatch.js里面被运行 ...

  • shiro原理简析+基于springboot基础实践

    1、shiro原理简析 原理简析: 1、subject支持不通调用获取用户信息 2、SecurityManager...

  • JSPatch

    官方原理:https://github.com/bang590/JSPatch/wiki/JSPatch-实现原理...

  • DNS & CDN & HTTPDNS 原理简析

    DNS & CDN & HTTPDNS 原理简析 背景:域名系统 DNS (Domain Name System ...

  • Flutter中PlatformView相关

    Flutter Platform View 使用及原理简析Flutter 58: 图解 Flutter 嵌入原生 ...

  • jQuery原理简析

    网上很多jQuery的分析文章,虽然很详细,但是对我这种小白,只想了解一下大概原理,而不想花太多时间研究细节,于是...

  • HashMap原理简析

    前言:该文像是一片全貌介绍,重点主要落在equals方法和hashCode方法,这篇浅谈Java中的hashcod...

  • Retrofit原理简析

    自己学习总结,仅供自己参考,如有不对欢迎指正 官方文档:https://square.github.io/retr...

  • mmap原理简析

    mmap Memory Mapping 原理 首先,“映射”这个词,就和数学课上说的“一一映射”是一个意思,就是建...

  • Retrofit原理简析

    记得很久以前,写过一篇文章,主要说的是Retrofit应用的:Retrofit2+RxJava2踩坑 今天我们来简...

网友评论

      本文标题:jspatch原理简析

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