iOS第三方類庫JSPatch(熱更新)

----------------------------------------------------------------------------------------------------------------------------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

 

轉載請標註原文地址:http://www.cnblogs.com/zhanggui/p/5157177.html

相關文章
相關標籤/搜索