《我要上头条》第七期:JSPatch 作者 bang
Posted 开发者头条
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《我要上头条》第七期:JSPatch 作者 bang相关的知识,希望对你有一定的参考价值。
《我要上头条》是《开发者头条》的一个固定栏目,每周我们会邀请一位嘉宾来回答固定的 10 个问题。
我们对嘉宾的要求:
必须是开发者;
必须有自己的作品(开源项目、工具、应用均可 );
未必是大牛,但在用心做事。
《开发者头条》愿意帮助这样的开发者上头条!
《我要上头条》第七期:JSPatch 作者 bang
0. 简单介绍下自己?
我叫 bang,目前是一个 ios 开发者,之前做过几年前端。我一直喜欢做各种完整的作品,做过推特中文圈、伊书、一些独立 iOS App (http://app.cnbang.net/),以及最近的开源项目 JSPatch,在我看来开源项目也是完整的作品,这算是我最大的爱好,对此乐此不疲。
1. 介绍下 JSPatch?
JSPatch 是最近开源的一个 iOS 库,引入后就可以用 javascript 调用和替换任何 Objective-C 的原生方法,获得脚本语言的能力:动态更新 APP、替换项目原生代码修复 bug。
2. JSPatch 希望解决什么问题?
JSPatch 希望解决 iOS APP 热更新的问题。
iOS APP 开发最头痛的问题之一就是线上 bug 无法及时修复,即使经过再严格的测试,也无法避免把 bug 带上线,一旦出现严重 bug,只能提交新版本,等待 App Store 审核,再等待用户手动升级,人力和时间成本巨大。
使用 JSPatch 可以解决这个问题,像更新 Web 一样更新 iOS APP,遇到严重 bug 可以直接下发 JS 脚本,替换掉原生 bug 代码,无需发版本也无需用户手动更新,即时修复 bug。
3. 与其他产品相比,JSPatch 的最大优势是什么?
最大的优势是轻巧。JSPatch 整个库只有三个文件,加起来只有 1k 行代码,JSPatch 一直有意识保持库的小巧,不给使用者添加负担。另外相对目前另一个使用 lua 打补丁方案 WaxPatch,JSPatch 的优势有:
JS 语言
使用内置 JavaScriptCore 引擎,符合 Apple 审核规则
线程安全,替换的方法支持多线程调用
支持替换方法名包含下划线的方法
支持 Block / GCD
4. 开发 JSPatch 的过程中,有什么难忘的事?
难忘的应该是某天灵光一闪解决难题的时刻,当时为项目内存占用太大苦恼,想尽 JS 语法的可能性都无法解决,最后突然想到可以修改 JS 语法规则,通过对 JS 代码进行简单的字符串替换做到了转发函数调用,完全解决了内存问题,这是开发人员的幸福时刻。
5. 目前 JSPatch 的用户情况怎样?
目前 JSPatch 开源不到两周,GitHub 上已有一千多 Star 与一百多 Fork,也有不少开发者提 Issue 和提交 PR,一起完善这个项目。目前 JSPatch 还处于开发期,很快会投入使用。
6. JSPatch 的下一步计划是什么?
目前主要是提高稳定性,加强测试,推动产品使用。再进一步可能是完善外围设施,提供完整的下发脚本/加密存储等解决方案。也会尝试跟 samurai 框架结合,做到使用 html/CSS/JS 书写原生 App。
7. 对于编程新手,你有什么学习建议?
我自己的学习方式是边做边学,先出成果,再探究原理,让成果激励自己保留兴趣,不一定适合所有人。另外建议学习追求深度而不是广度,遇到问题可以刨根问底,时间长了会有不少意想不到的收获。
8. 除了编程,你还有哪些业余爱好?
最大的俩业余爱好是吃零食和玩数码产品,其他的就比较零散了,看漫画、打桌球、玩休闲游戏等。
9. 推荐几个你觉得有用但是别人推荐不多的产品、工具或项目?
别人推荐得不多的,想到两个:
Chrome 插件 OneTab。Chrome 上 tab 经常一开几十个,想关掉又怕后面找不回,OneTab 可以把这些 tab 都回收记录起来。
做个广告推荐自家产品 XReminder,快速添加提醒事项,我自己用得比较多。
(完)
重要信息
http://toutiao.io/s/ysob
如何联系 bang?
Blog:http://blog.cnbang.net
微博:@bang
Twitter / Github:@bang590
也欢迎点击阅读原文点评 JSPatch。
开发者头条 - 开发者的首选阅读分享平台
http://toutiao.io/
如果你是开发者并且有自己的作品,欢迎联系我们:tt@toutiao.io
以上是关于《我要上头条》第七期:JSPatch 作者 bang的主要内容,如果未能解决你的问题,请参考以下文章