美文网首页
JSPatch实现原理解析

JSPatch实现原理解析

作者: Chris_C | 来源:发表于2017-02-22 07:03 被阅读54次
    JSPatch

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

    基础原理

    JSPatch能够通过JS调用和改写OC方法最根本的原因是Objective-C是动态语言,OC上所有方法的调用/类的生成都通过Objective-C Runtime在运行时进行,我们可以通过类名/方法名反射得道相应的类和方法:

    Class class =     NSClassFromString("UIViewController");
    id viewController = [[class alloc]init];
    SEL selector =     NSSelectorFromString("viewDidLoad");
    

    也可以替换某个类的方法为新的实现:

    static void newViewDidLoad(id self,SEL sel){}
    class_replaceMethod(class,selector,newViewDidLoad,@"");
    

    还可以新注册一个类,为类添加方法:

    Class cls = objc_allocateClassPair(superCls,"JPObject",0);
    objc_registerClassPair(cls);
    class_addMethod(cos,selector,implement,typedesc);
    
    总结

    JSPatch的基本原理:JS传递字符串给OC,OC通过Runtime接口调用和替换OC方法。这是最基础原理

    方法调用

    相关文章

      网友评论

          本文标题:JSPatch实现原理解析

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