iOS开发 — JSPatch

因为后端服务切换,线上有个版本可能会受到影响,奈何苹果审核周期太尼玛长啊,所以打算在不发布新版的情况修复问题。

因为之前老大有让了解一个叫做"JSPatch"的东西,当时为了应付老大(我是真正的懒),先植入到了版本中去了(现在想想真是万幸),但是对于JSPatch如何调用真是一点都不知道啊。

这不周一中午老大和我讲起这事情,下午就让我出个方案给他,前提就是使用JSPatch更新我们的代码。

好吧,废话不说,写完这遍我还要回家呢,女程序缓天天加班到现在,真是。。。

网上搜JSPatch,如上图,总体而言,都是差不多的,所以一些基本的东西里面我也不会列举出来了。首先分享两个工具。

1 想了解JSPatch的我建议还是先去官网看看,可点击我是官网

2 觉得把OC转为JS很麻烦,可以通过这个工具点我点我,虽然转化后不一定准确,但是大部份还是OK的。

这次主要做的就是更换了原来代码的中两个方法(包含网络请求,Block回调)及插入一个新界面。基于原理你们都可以百度到,我就分享一下在写JS的过程中我遇到的几个问题吧,有些问题肯定很低级,谁让我是一个伪程序缓呢。其中这些问题也是在没有发现转换工具的时候遇到的,不过遇到了总归是好事情。

1 首先我是在Block那边卡了壳,当时也不知道有转换工具,因为我的网络请求牵涉到签名等问题,如你们所知,在JS里面进行签名那就是竹篮打水—一场空。后来还是通过JS回调OC斛决了签名问题。Block也进行了拆分完成,后来通过转换工具发现其实并不需要拆分。

2 字符串比较问题,当我用console.log输入一模一样的值时,比较后的结果却是不一样的逻辑,JS里面的“等于”是恒等于"==="的意思,但字符串却不是这样的,仍然和OC里面差不多

var a = 'hehe';

var b ='hehe';

console.log(a);

console.log(b);

if ( a.isEqualToString(b) ){

  console.log('我们是一样的哦');

}

3 在构建的新界面上给Button添加方法时消磨了我不少时间,转化出来的为

sendBtn.addTarget_action_forControlEvents(self, @selector("onSendBtnClick:"), 64);

但是程序运行起来就崩溃啊,我真的讨厌崩溃,另外说一点,由于我不会断点在JS里面调试,都是通过console.log()输出,这样的效率真是太太太差了。

最后尝试了这样的方式,竟然OK了,btn.addTarget_action_forControlEvents(self, "onSendBtnClick:", 64);(64是指"UIControlEventTouchUpInside"对应的值,左移6位即2的6次方),在JS里面只能识别具体的值,是不是觉得JS很聪明呢。

在 iOS8 下,JSPatch 支持使用 Safari 自带的调试工具对 JS 脚本进行断点调试,听到这个消息是不是很开心伐,我一向是个爱分享的主儿,当然不会藏着喽,现在就分享出来:

启动调试工具

首先需要开启 Safari 调试菜单:Safari -> 偏好设置 -> 高级 -> 勾选[在菜单栏中显示“开发”菜单]

接着启动APP -> Safari -> 开发 -> 选择你的机器 -> JSContext

即可开始调试。

连接真机调试时,需要打开真机的web检查器:设置 -> Safari -> 高级 -> Web检查器

资源列表

资源列表列出了 JSPatch 所有执行中的脚本文件,点开文件后可以对其进行断点调试。

通过 [JPEngine evaluateScript:script] 接口执行的脚本,在资源列表里都表示为 main.js。

通过 [JPEngine evaluateScriptWithPath:filePath] 接口执行的脚本,在资源列表里会以原文件名表示。

4 获取屏宽

var viewFrame = self.view().frame();

var SCREEN_WIDTH = viewFrame.width;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容