使用jspatch进行热修复的实战总结

简介: 最近正式在线上项目中集成了jspatch进行热修复,这里做一个简单的总结。工具篇:首先,用xcode来编辑js非常困难,基本上没有缩进,完全需要手写;经过研究发现使用 Sublime text3 结合 jsformat 插件,可以很好的编辑js脚本。

最近正式在线上项目中集成了jspatch进行热修复,这里做一个简单的总结。

工具篇:

首先,用xcode来编辑js非常困难,基本上没有缩进,完全需要手写;经过研究发现使用 Sublime text3 结合 jsformat 插件,可以很好的编辑js脚本。

一般来说,我们可以使用JSConvertor对js进行转换,然后在sublime text中进行编辑和格式化,通过xcode run代码来查看效果。

ps: jsformat 快捷键: The default key binding is "ctrl+alt+f"


一次热修复实践中遇到的转换问题:

1. js是动态类型的语言,因此所有的类型转换代码全部需要删除掉。

2. 注意不要遗漏defineClass。

3. 所有的枚举或是宏需要用值来替换。

4. 判空不要和null比较,而是直接用(xxx)和(!xxx)。

5. selector直接替换成字符串即可。

6. console.log("testing3");

这样的格式用来打印debug日志;建议在代码的分段都打印一些日志,可以用来判断是什么环节的问题。

7. 工具自动转换会自动去掉一个原来的@符号(在字符串拼接等情况下要注意),这个时候需要手动加回去。

8. stringwithformat只支持%@。

9. nsstring、array、dic等注意类型,js和oc类型不同,必要时使用.toJS()来转换到js.

10. block 作为参数传递的时候需要手动转换其类型,具体参考jspatch的文档。



上面说的其实也都是一些基本的东西,大家遇到问题去查找官方文档对应的wiki,耐心一点就可以。

https://github.com/bang590/JSPatch/wiki/JSPatch-%E5%9F%BA%E7%A1%80%E7%94%A8%E6%B3%95#%E8%A6%86%E7%9B%96%E6%96%B9%E6%B3%95

目录
相关文章
|
IDE Shell 开发工具
Android查看UI布局相关工具
Android查看UI布局相关工具
|
5月前
|
前端开发 开发者 容器
使用CSS Grid实现响应式布局
使用CSS Grid实现响应式布局
|
移动开发 安全 Java
钉钉企业应用网关了解一下
通过企业应用网关,即便该服务器完全在互联网上运行,我们也能够实现“零信任”访问。
2744 1
钉钉企业应用网关了解一下
|
存储 Java 数据库
如何处理线程池关闭时未完成的任务?
总之,处理线程池关闭时未完成的任务需要综合考虑多种因素,并根据实际情况选择合适的处理方式。通过合理的处理,可以最大程度地减少任务丢失和数据不一致等问题,确保系统的稳定运行和业务的顺利开展。
543 64
|
安全 C++ 开发者
C++一分钟之-动态内存管理:new与delete
【6月更文挑战第19天】在C++中,`new`和`delete`用于动态内存管理,分配和释放堆内存。不正确使用可能导致内存泄漏和悬挂指针。要避免这些问题,确保每次`new`都有匹配的`delete`,释放内存后设指针为`nullptr`。使用`delete[]`释放数组,避免重复释放。智能指针如`std::unique_ptr`可自动管理内存,减少手动管理的风险。通过实例展示了如何使用智能指针进行安全的内存操作。
242 4
|
机器学习/深度学习 人工智能 机器人
「AIGC」DALL-E2详解
**DALL-E 2是OpenAI的文本到图像生成器,融合艺术与技术,通过文本编码、先验模块和图像解码创新性地将描述转化为视觉作品。它能理解抽象概念,生成多样化、高质量图像,应用于艺术、设计及媒体行业。然而,细节处理有限且涉及伦理挑战。**
833 0
|
安全 网络安全 网络虚拟化
WireGuard 系列文章(二):WireGuard 简介 - 快速、现代、安全的 VPN 隧道
WireGuard 系列文章(二):WireGuard 简介 - 快速、现代、安全的 VPN 隧道
vs2022配置Qt6
vs2022配置Qt6
625 1
|
Arthas Java 测试技术
Arthas 实践案例 | 学习笔记
快速学习 Arthas 实践案例
Arthas 实践案例 | 学习笔记
|
IDE Java 开发工具
Java编译成功但是运行不成功的原因
Java编译成功但是运行不成功的原因
1650 0
Java编译成功但是运行不成功的原因