程序员

热修复-JSPatch源码

2018-09-18  本文已影响73人  耿杰

JSPatch

简单版本的JSPatch和注释:https://github.com/misaka14/JSPatch_simple

学习JavascriptCore

一、了解JavascriptCore

JavaScriptCore框架 是一个苹果在iOS7引入的框架,该框架让 Objective-CJavaScript 代码直接的交互变得更加的简单方便。

JavaScriptCore是苹果Safari浏览器的JavaScript引擎,或许你听过GoogleV8引擎,在WWDC上苹果演示了最新的Safari,据说JavaScript处理速度已经大大超越了GoogleChrome,这就意味着JavaScriptCore在性能上也不输V8了。

JavaScriptCore框架其实就是基于webkit中以C/C++实现的JavaScriptCore的一个包装,在旧版本iOS开发中,很多开发者也会自行将webkit的库引入项目编译使用。现在iOS7把它当成了标准库。

JavaScriptCore框架在OS X平台上很早就存在的,不过接口都是纯C语言的,而在之前的iOS平台(iOS7之前),苹果没有开放该框架,所以不少需要在iOS app中处理JavaScript的都得自己从开源的WebKit中编译出JavaScriptCore.a,接口也是纯C语言的。可能是苹果发现越来越多的程序使用了自编译的JavaScriptCore,干脆做个顺水人情将JavaScriptCore框架开放了,同时还提供了Objective-C的封装接口。

二、使用JSContext

1、OC调用JS的方法
2、JS调用OC方法

JSPatch

一、简单看一下官方的DEMO

二、源码分析
image.png

主要取出这个类对象、对象方法,然后调用overrideMethod方法

image.png

三、总结分析

替换、添加方法流程
触发按钮事件的流程

通过正则转换__c

image.png
转换后的函数
image.png

主要做了三件事:

源码

上一篇 下一篇

猜你喜欢

热点阅读