----------------------------------------------------------------------------------------------------------------------------html
更新记录git
2016年3月4日github
JSPatch官方网址:http://jspatch.com/服务器
OC转JS代码工具:http://bang590.github.io/JSPatchConvertor/app
----------------------------------------------------------------------------------------------------------------------------jsp
1、前言工具
场景一:咱们在作iOS开发的过程当中,不免会因为本身的不细心致使一些小问题。若是产品没上线以前发现还好,若是上线了才发现问题,那么问题就大了,可能直接影响KPI,更严重的甚至直接面临着fire。ui
场景2、一旦上线的产品,若是临时遇到需求变更,那么久必须从新修改代码。一旦修改了项目代码的话,咱们就必须从新发版。这样岂不是很麻烦?lua
如今就来让咱们看一下JSPatch,它的出现能够在不发版的状况下动态的自行修复或者添加新的需求。spa
2、JSPatch简介
JSPatch:它是一个第三方类库,地址以下:
https://github.com/bang590/JSPatch
它是JavaScript和OC之间的桥梁,你能够在js文件中去调用任何OC类和方法,而后在js文件中去动态修改OC类。达到不从新发版就更新的效果。它主要是使用的OC runtime实现的。咱们可使用它热更新本身的iOS app。
3、JSPatch使用
首先,咱们去这里下载,而后导入项目工程里面。(我的比较推荐使用cocoapods导入)而后咱们在AppDelegate中导入:
#import "JPEngine.h"
而后添加以下代码在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
添加以下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [JPEngine startEngine]; NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"js"]; NSString *script = [NSString stringWithContentsOfFile:sourcePath encoding:NSUTF8StringEncoding error:nil]; [JPEngine evaluateScript:script]; self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.rootViewController = [ViewController new]; [self.window makeKeyAndVisible]; return YES; }
其中的demo.js就是咱们须要手动去写的一个js代码:
require('UIView,UIColor');
defineClass('ViewController',{
changeBGColor:function() {
var view = self.view();
view.setBackgroundColor(UIColor.yellowColor());
return view;
}
});
咱们能够简单看一下demo.js的内容。其中的ViewController就是咱们须要更改的类的类名,changeBGColor就是类ViewController中的一个方法,咱们能够经过该js去重写该方法,达到不更新OC代码就能够修改程序的效果。
4、项目中的使用
这里就只是简单的说一下使用,咱们可让后台写一个接口,经过该接口去拿到服务器上的js文件,而后动态修改服务器上js文件,就能够达到热更新的效果。
5、更多
更多使用能够查看其github主页。
6、附
源码地址:http://pan.baidu.com/s/1qXvGNGK