JSpatch初了解

2016-09-26  本文已影响0人  CiceroLee

        经常性的在原生开发App过程中会遇到因为需求的原因,有的模块会短时间需要变化,或者能够定制不同模版的开发,用原生代码实现限制比较多,而且出现突发问题之后很难快速更新产品。

        JSPatch诞生于2015年5月,可以使用JavaScript调用OC的原生接口,从而动态的植入代码替换旧的代码,以实现修复线上的bug。

        JSPatch项目在github上有项目托管,3000star。

一、JSPatch的实现原理

基础原理

Objective-C是动态语言,具有运行时的特性,该特性可以通过类名称和方法名的字符串获取该类和该方法,并实例化和调用。

Class class = NSClassFromString("UIViewController");

id viewController =[ [class alloc]init];

SEL selector =  NSSelectororFromString("viewDidload");

[viewController performSelector:selector];

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

static void newviewDidLoad(id self,SEL see){}

class_replaceMethod(class,selector,newViewDidLoad,@"")

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

Class cls =  objc_allocateClassPair(superCls,"JPObject",0);

objc_registerClassPair(cls)

class_addmethod(cls,selector,implement,typedesc);

JavaScript的调用

再补充~

上一篇 下一篇

猜你喜欢

热点阅读