成吨提高iOS开发效率 - Injection for Xcode

Posted 二进制小镇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了成吨提高iOS开发效率 - Injection for Xcode相关的知识,希望对你有一定的参考价值。


↗点「有意思啊」关注,「...」转发

PC论坛“程序员吧”即将上线!

论坛提供视频、电子书、源码等优质学习资料!

今天强烈推荐一个Xcode高端必备插件: Injection Plugin for Xcode

https://github.com/johnno1962/injectionforxcode


直接放demo演示动图:


Injection Plugin for Xcode

我很久以前就希望有这么一种功能,直接修改某行代码,F5一下就能刷新这个实例,而不用重写build整个项目。靠夭,我不是在说前端!没想居然有一天,梦想照入现实!!!是的,就是它,不用重新启动应用就可以让修改的代码生效。

使用

超级简单:修改源码,按下刷新的快捷键ctrl+=。会有一个快速的进度条闪过,修改的代码就生效了。


安装

可以使用Alcatraz安装

或者clone这个项目,运行InjectionPluginLite/InjectionPlugin.xcodeproj。

检验安装成功

在某个类里添加下面的方法:

(void)injected{

   NSLog(@"I've been injected: %@", self);

}或者swift下:

func injected() {

   print("I've been injected: (self)")

}打一个断点在这行代码上,按下快捷键ctrl+=后,代码执行到这个类时,如果断点进入这个方法说明你已经安装成功了。


支持Swift

Swift中的大部分类都可以正常使用。不过以下一些情况使用会有问题:

结构中的修改

标记为final的func和class

不在类里的全局函数和变量

工作原理

Injection是一个Xcode的扩展插件,可以让你修改一个类的代码实现而不用重启整个应用。

它通过解析应用的build日志来判断源代码文件上次是怎么被编译的。然后会把这些重新编译一遍包在一个已经通过动态加载器(dynamic loader)注入到应用的bundle里。这个时候其实有两个版本的类在app里,一个原始的和一个修改过的版本。修改过的版本通过和原始类"swizzled"来产生效果。

swizzling利用了OC的runtime。这个也可以在Swift中没有标记为final或者private的方法(可以被override的方法)。对结构体无效。

这个插件还可以做点什么

按照这个文档操作,还可以支持Storyboard Storyboard-based ios projects.

也可以可视化的调整颜色 collection of tunable parameters

当你开始注入时,会在同一个目录下生成一个项目文件:iOSInjectionProject 或者 OSXInjectionProject。这个项目用于注入你的修改到原项目。建议加入.gitignore。

ctrl+=的快捷键可以在 "Tunable App Parameters"面板里自定义

如果想在一台设备上使用,参考这个文档patch to your project..

我安装时遇到的一个错误

第一次使用,提示我项目里使用的一个第三方framework找不到。这个时候打开它自动生成的iOSInjectionProject,编译一下可以看到错误的具体原因。我看到issue里也好多人遇到。解决方式就是将自己项目framework search paths中的这个第三方框架的路径拷贝到iOSInjectionProject里。

Vip会员群介绍

youyisiaApp

加入iOS开发微信Vip群需知: 

  1. 书籍来源:出于会员福利,为会员定制网络上没有且最新出版的iOS技术书籍,PDF高清版! 

  2. 扩散性:资料不宜扩散,微信会员人数限制200人,发现扩散者取消会员资格,你懂的! 

  3. 数量与质量:今年共享12本以上网络无法获取的新书,我认为有价值或会员自荐有价值的iOS新书! 

  4. 交流平台:微信群高效的语音与文字交流平台,同时加入QQ千人iOS技术交流群!

  5. 现已更新大神班一期iOS 9全套视频!

有意思啊

iOS开发者长按关注

以上是关于成吨提高iOS开发效率 - Injection for Xcode的主要内容,如果未能解决你的问题,请参考以下文章

提高递归效率

使用注释提高iOS开发效率

提高iOS开发效率的第三方框架等--不断更新中。。。

使用 OpenAI 的 ChatGPT 提高开发人员的工作效率

使用 OpenAI 的 ChatGPT 提高开发人员的工作效率

iOS-构建自己的代码块提高编码效率-Xcode代码块