injectionIII iOS代码注入工具(上)
前言
如果之前用过injection的朋友一定会对其热重载的特性印象深刻,如今injection经过多次更新,现在以injectionIII之名上架到APP Store,安装和卸载与日常使用的应用程序相差无遗。
injectionIII支持swift和Objective-C,注入也十分简便,只需要短短几行代码即可:
//在applicationDidFinishLaunching中
///Swift
#if DEBUG
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle")?.load()
#endif
//Objective-C
#if DEBUG
NSBundle *injectionBundle = [NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"];
[injectionBundle load];
#endif
唯一可惜的是,相关功能只支持对simulator使用,不支持真机(还有小声bb图标还是最初的那样一直没改)。
准备工作
injectionIII从APP Store获取下载之后,打开injectionIII和你的iOS项目,iOS添加代码,并在顶部菜单栏点击针头图标,弹出菜单点击‘Open Project’,选择你的项目根目录,准备工作就做好了。
![](https://raw.githubusercontent.com/MrYu4/MyUploadPicture/master/%E6%88%AA%E5%B1%8F2020-05-16%20%E4%B8%8A%E5%8D%8812.51.36.png)
Xcode中选定模拟器(再次强调不支持真机,不支持!),运行代码,运行完成之后注意Output是否有类似的输出,必须要有才能进行下一步骤。
![](https://raw.githubusercontent.com/MrYu4/MyUploadPicture/master/%E6%88%AA%E5%B1%8F2020-05-16%20%E4%B8%8A%E5%8D%881.19.15.png)
热重载
在纯代码中凡是修改好了之后,直接cmd+s即可,另外Output中也会有输出。
当对应方法、类再次调用时就可以看到效果,然而有个很大的问题在于homeVC的ViewDidLoad
之类的在运行过程中逻辑上只可能调用一次的方法在此运行过程中无法检验修改效果。
![](https://i-blog.csdnimg.cn/blog_migrate/ef9929d106cd64e87616bc838f1b8ab2.gif)
对于storyboard,让修改生效的办法不是cmd+s,而是cmd+b,也就是build你的项目,不过我试了试xib就算是cmd+b也不能生效。
总结
其实还有很多细节的东西还没有在文章中说明,例如SwiftUI的热重载、App Tracing功能、支持与Vaccine搭配使用等,更多详细的东西请参考作者项目主页。
one more things
支持APPCode,用法和在Xcode一样,无需再装新的插件,不过第一次运行要先在Xcode中运行。
求打赏
![](https://i-blog.csdnimg.cn/blog_migrate/242b374e71f20a87734fb2058a1d938e.png)