Injection:iOS热重载-所见即所得

在介绍这款工具之前首先得感谢John Holdsworth开发者给我们iOS开发提供了帮助

假如你的项目每次build时间在半分钟以上,或者你电脑的配置不高,导致每次运行项目都很慢,那么你可以静下心来,花几分钟时间阅读完这篇文章!

先来看一个动态图

Resize icon

我喜欢叫他所见即所得,让我想起了Xcode的playground,开个玩笑,说正题。先说理由,再说安装及使用方法

1. 第一个使用他的原因:可以加快我的开发速度

每当我写页面或者改bug的时候难免需要时刻运行查看效果,有时候改了一个label的字体,或者背景颜色,或者frame,都需要重新运行,但是现在不需要了,只要一步CMD+S,保存当前文件

Resize icon

可以看到像护士给你打针时候用到的类似针筒的图标会变成绿色,这个时候可以理解为,护士正在给你打针,过一会儿,颜色变成红色

Resize icon

变成红色以后表示护士打针打完了,可以看到效果了,官方表示保存以后可以立马看到效果,但是鄙人每次都是退出这个页面,重新进入,如果是列表需要上下滑动才能看到效果

2. 第二个使用他的原因:使用起来方便

这个是mac上的一款app,可以在App Store中搜索Injection,那款不要钱的免费的app就是,上次版本更新是在18年的05.17日,很巧合的日子。点击安装

Resize icon

找到你的appdelegate.m文件,上代码:

OC版

1
2
3
4
5
6
7
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#if DEBUG
[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];
// [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle"] load];
// [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle"] load];
#endif
}

switf版

1
2
3
4
5
6
7
8
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
#if DEBUG
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle")?.load()
// Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle")?.load()
// Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle")?.load()
#endif
return true
}

注意这里路径不要写错,建议粘贴赋值

废话不多说,直接点击,然后打开你的项目,CMD+R,运行项目,这个时候会弹出来一个选择框,让你选择项目的根路径

Resize icon

点击你的根目录,然后点击下面的按钮

Resize icon

这个时候程序会继续运行,注意看Xcode控制台的log日志

Resize icon

看到这句话的时候说明已经OK了,可以开始你的表演了!在每次修改保存文件以后都会看到这句话,到这里其实已经完了。下面说一下有时候没有看到效果的原因

3. 没有看到效果的问题的总结

  • 先看下有没有保存成功,也就是针筒的颜色从绿色变成红色
  • 确认上面那句话有没有打印,也就是说有没有真的运行这个工具
  • 如果修改的是cell/item上面的内容,需要上下滚动才能看到效果
  • 如果修改的是一个普通页面的内容,最好是退出这个页面,再进入这个页面
  • 确认Xcode的版本9.3及以上

最后感谢所有能够看到末尾的人,欢迎加群QQ交流:578068845

坚持原创技术分享,您的支持将鼓励我继续创作!