iOS开发插件推荐(1):利用神插件injectionforxcode倍增你的开发效率

前言

这款插件曾经被我扔到了垃圾堆,直到最近UI部门要联调App,为了改一个像素,改个颜色,我不得不修改代码,停止运行,再重启模拟器,再一个页面页面的跳转到调试所在页面,其实崩溃的不是代码不是代码,是我是我是我。。。还好我想起了它,还好有Github,否则我将追悔莫及,恨一万年都不够。今天就跟大家介绍这款神级插件injectionforxcode

神奇之处

在程序运行过程中插入OC/Swift代码,不需要重启模拟器就可以查看模拟器运行效果。


injected.gif

开门请神

跟安装其他插件的方式一样,推荐使用Alcatraz插件管理器安装。
打开Xcode我们可以看到Product菜单下多出了如下两个选项代表你请神成功了。


Paste_Image.png

召唤神

1.在APP运行过程中修改代码,比如在controller中加入以下方法

- (void)injected
{
    NSLog(@"I've been injected: %@", self);
}

2.按下ctrl + =,有没有出现一个加载的进度???有的话,说明你插件安装成功,马上你就可以看到控制台打印了I've been injected 。是不是很神奇,如果你不这么觉得我就敢说你是神经病。

拜拜神,给你带来财富

现在你可以尝试在在代码插入任何代码了,记住按ctrl + =召唤神,让模拟器立刻响应你的代码变化吧,看看神是如何神奇地提高你的调试效率的。

它为什么这么神

它通过解析应用的build日志来判断源代码文件上次是怎么被编译的。然后会把这些重新编译一遍包在一个已经通过动态加载器(dynamic loader)注入到应用的bundle里。这个时候其实有两个版本的类在app里,一个原始的和一个修改过的版本。修改过的版本通过转发"swizzled"作用在原来的类上来产生效果。
这个swizzling技巧事实上利用了OC的运行时绑定方法调用和方法实现的来达到目的。这个也可以在Swift中没有标记为final或者private的方法(比如可以被override的方法)。

原理图


yuan'li'tu

提供的技能

它提供了三个实现回调的方法
1.- (void)injected实例方法。它可以让我们按下ctrl + =更新一个类。比如在该方法里调用viewDidLoad方法,就可以再次调用控制器的viewDidLoad方法。
2.+ (void)injected类方法,可以让我们更新全局函数。
3.监听名为INJECTION_BUNDLE_NOTIFICATION的通知,因此我们可以让其他类监听该通知。
4.使用tunable_parameters


Paste_Image.png

神是万能的

  • 1.我其实还支持Storyboard Storyboard-based iOS projects.
  • 2.我其实也可以可视化的调整颜色 collection of tunable parameters
  • 3.当你开始注入时,我会在同一个目录下生成一个项目文件:iOSInjectionProject 或者 OSXInjectionProject。这个项目用于注入你的修改到原项目。建议加入.gitignore。
  • 4.ctrl+``=的快捷键可以在 "Tunable App Parameters"面板里自定义
  • 5.如果想在一台设备上使用,参考这个文档patch to your project..
    低调低调,你知道我很神就行了。

神仙下凡时

我再神也要下凡的啊,不要笑话就行啊,看看就得了,敢笑话我?我就让你写的程序一直有bug,一直有一直有Z Z Z 。


Paste_Image.png
  • 1.为了防止出现两个单例(之前提到swizzle会创建一个相同的类),shared前缀修饰的类方式不能注入代码。
  • 2.dispatch_on_main方法不能注入。
  • 3.第三点我看不懂,不知道怎么翻译,可以去Github看起官方原文,不好意西。

找到此神

GitHub :Injection Plugin for Xcode
作者twitter :@orta
作者亲自录的教程(英文) :
https://www.youtube.com/watch?v=uftvtmyZ8TM&feature=youtu.be

补充

给你介绍这么好的东西,你不需要谢谢我,不要给我打赏,千万不要,你要是打赏了,我一定不会。。。手软。



文/jackiehoo(简书作者)
原文链接:http://www.jianshu.com/p/070d8b1a6190
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值