开发者社区> 我不是掌柜> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

iOS第三方类库JSPatch(热更新)

简介:
+关注继续查看

----------------------------------------------------------------------------------------------------------------------------

更新记录

2016年3月4日

JSPatch官方网址:http://jspatch.com/

OC转JS代码工具:http://bang590.github.io/JSPatchConvertor/

----------------------------------------------------------------------------------------------------------------------------

原文地址:http://www.cnblogs.com/zhanggui/p/5157177.html

一、前言

  场景一:我们在做iOS开发的过程中,难免会由于自己的不细心导致一些小问题。如果产品没上线之前发现还好,如果上线了才发现问题,那么问题就大了,可能直接影响KPI,更严重的甚至直接面临着fire。

  场景二、一旦上线的产品,如果临时遇到需求变动,那么久必须重新修改代码。一旦修改了项目代码的话,我们就必须重新发版。这样岂不是很麻烦?

  现在就来让我们看一下JSPatch,它的出现可以在不发版的情况下动态的自行修复或者添加新的需求。

二、JSPatch简介  

  JSPatch:它是一个第三方类库,地址如下:

    https://github.com/bang590/JSPatch

  它是JavaScript和OC之间的桥梁,你可以在js文件中去调用任何OC类和方法,然后在js文件中去动态修改OC类。达到不重新发版就更新的效果。它主要是使用的OC runtime实现的。我们可以使用它热更新自己的iOS app。

三、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代码就可以修改程序的效果。

四、项目中的使用

  这里就只是简单的说一下使用,我们可以让后台写一个接口,通过该接口去拿到服务器上的js文件,然后动态修改服务器上js文件,就可以达到热更新的效果。

五、更多

  更多使用可以查看其github主页。

六、附

  源码地址:http://pan.baidu.com/s/1qXvGNGK

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iOS中动态更新补丁策略JSPatch运用基础二
iOS中动态更新补丁策略JSPatch运用基础二
57 0
iOS开发Swift篇—(一)简单介绍
iOS开发Swift篇—简单介绍 一、简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C一样,可以用于开发iOS、Mac应用程序 苹果从2010年7月开始设计Swift语言,耗时4...
922 0
iOS开发UI篇—Quartz2D简单使用(二)
iOS开发UI篇—Quartz2D简单使用(二) 一、画文字 代码: 1 // 2 // YYtextview.m 3 // 04-写文字 4 // 5 // Created by 孔医己 on 14-6-10.
609 0
iOS开发UI篇—Modal简单介绍
iOS开发UI篇—Modal简单介绍 一、简单介绍 除了push之外,还有另外一种控制器的切换方式,那就是Modal 任何控制器都能通过Modal的形式展⽰出来 Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为⽌ 二、代码说明 新建一个项目,在Application的代理中添加window和控制器。
792 0
iOS开发UI篇—Quartz2D简单介绍
iOS开发UI篇—Quartz2D简单介绍 一、什么是Quartz2D  Quartz 2D是⼀个二维绘图引擎,同时支持iOS和Mac系统  Quartz 2D能完成的工作:   绘制图形 : 线条\三角形\矩形\圆\弧等   绘制文字   绘制\生成图片(图像)   ...
840 0
iOS开发UI篇—APP主流UI框架结构
iOS开发UI篇—APP主流UI框架结构 一、简单示例 说明:使用APP主流UI框架结构完成简单的界面搭建 搭建页面效果:                                  二、搭建过程和注意点 1.新建一个项目,把原有的控制器删除,添加UITabBarController控制器作为管理控制器 2.对照界面完成搭建 3.注意点: (1)隐藏工具条:配置一个属性,Hideabotton bar在push的时候隐藏底部的bar在那个界面隐藏,就在哪个界面设置。
747 0
iOS开发UI篇—ios应用数据存储方式(归档)
iOS开发UI篇—ios应用数据存储方式(归档)  一、简单说明 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦; 偏好设置(将所有的东西都保存在同一个文件夹下面,且主要用于存储应用的设置信息) 归档:因为前两者都有一个致命的缺陷,只能存储常用的类型。
659 0
iOS开发UI篇—UITabBarController简单介绍
iOS开发UI篇—UITabBarController简单介绍 一、简单介绍 UITabBarController和UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型的例子就是QQ、微信等应⽤。
776 0
iOS开发UI篇—UITabBarController生命周期(使用storyoard搭建)
iOS开发UI篇—UITabBarController生命周期(使用storyoard搭建)   一、UITabBarController在storyoard中得搭建 1.新建一个项目,把storyboard中默认的控制器删除,拖UITab Bar Controller。
985 0
+关注
我不是掌柜
从小记性差,所以把东西都记下来。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
React-Native 在iOS上的性能优化方案
立即下载
深入剖析 iOS 性能优化
立即下载
loTCandyJar:Towards an Intelli
立即下载