Date
Sep. 8th, 2024
 
2024年 8月 6日

Post: Injection for Xcode : 翻滚吧!开发效率

Injection for Xcode : 翻滚吧!开发效率

Published 12:09 Sep 22, 2015.

Created by @ezra. Categorized in #Programming, and tagged as #iOS.

Source format: Markdown

Table of Content

其实从接触 iOS 以来一直有个期望,就是可以像 HTML 一样可以快速刷新应用实例,而不用一遍一遍的 Build。

如果你不抓紧,总有些人会实现你的梦想,今天要介绍的 Injection for Xcode 就是为这样的快速刷新而生的。事实上 Injection 是一个 Xcode 插件,它会解析应用的 build 日志,然后将重新编译的内容放入一个 bundle 中,而这个 bundle 已经通过 dynamic loader 载入到应用中。原始版本与修改后的版本其实是共存的,Injection 通过 swizzling 来产生我们所看到的效果。

它的使用也十分简单,启动 InjectionPluginLite/InjectionPlugin.xcodeproj 项目后直接 Build 然后重启 Xcode即可,Xcode 会提示是否加载插件,选择 Load Bundle。

现在,随便启动一个项目,在某各类例如控制器中,加入下面代码:

- (void)injected {
    // injected!!
}

+ R 运行你的项目,接下来将刚才代码的注释部分替换成随便什么代码,比如一个 UIAlertView。

然后,见证奇迹的时刻!按下 + = ,再看看应用的变化吧。

上效果图:

injection

当然 Injection 也是有局限性的,这一点从它的实现原理上就能看出来了。在这些情况下 Injection 会发生一些问题:

  • Swift 结构体的修改

  • Swift 中 final 修饰的方法和类的修改

  • Swift 中不在类中的全局函数和变量的修改

Pinned Message
HOTODOGO
The Founder and CEO of Infeca Technology.
Developer, Designer, Blogger.
Big fan of Apple, Love of colour.
Feel free to contact me.
反曲点科技创始人和首席执行官。
程序猿、设计师、奇怪的博主。
苹果死忠、热爱色彩斑斓的世界。
如有意向请随时 与我联系