iOS交互----JS交互(一)

JSPatch 是一个 iOS 动态更新框架,只需在项目中引入极小的引擎,就可以使用 JavaScript 调用任何 Objective-C 原生接口,获得脚本语言的优势:为项目动态添加模块,或替换项目原生代码动态修复 bug。

第一 资源列表

  1. JSPatch官网
  2. JSPatch开源--github
  3. JSPatchConvertor--OC转js代码
  4. JSPatchX---插件

第二 JSPatch 可以实现的原理

  1. JSPatch 能做到通过 JS 调用和改写 OC 方法最根本的原因是 : Objective-C 是动态语言,OC 上所有方法的调用/类的生成都通过 Objective-C Runtime 在运行时进行,我们可以通过类名/方法名反射得到相应的类和方法
  2. **具体做法: **JS 传递字符串给 OC,OC 通过 Runtime 接口调用和替换 OC 方法。
//获取初始化到一个类并执行指定的方法
Class class = NSClassFromString("UIViewController");
id viewController = [[class alloc] init];
SEL selector = NSSelectorFromString("viewDidLoad");
[viewController performSelector:selector];
------------
static void newViewDidLoad(id slf, SEL sel) {}
//替换方法的函数
class_replaceMethod(class, selector, newViewDidLoad, @"");
------------
//注册类 添加方法
Class cls = objc_allocateClassPair(superCls, "JPObject", 0);
objc_registerClassPair(cls);
class_addMethod(cls, selector, implement, typedesc);

如果对于runtime没有概念的话可以参考--iOS Runtime学习与使用

第三 JSPatch + Runtime

iOS交互----JS交互(一)_第1张图片
JSPatch
iOS交互----JS交互(一)_第2张图片
JSCore

以上图片来源于JSPatch 实际案例使用解析

继续补充


参考文章

  1. JSPatch-实现原理详解
  2. JSPatch 实际案例使用解析

更多精彩内容请关注“IT实战联盟”哦~~~


iOS交互----JS交互(一)_第3张图片
IT实战联盟.jpg

你可能感兴趣的:(iOS交互----JS交互(一))