injectionIII工具:让iOS开发调试实现热重载

大家在项目开发的时候,特别是UI调试,一个小小的改动就要重新运行整个项目,开发3秒钟,运行5分钟。如果了解过 React Native 开发的应该知道,React Native 调试方式热重载(Hot Reload),只要改动代码,就可以实时看到效果,对于UI调试来说,简直是成吨提升开发效率。

在 iOS 开发中利用 injectionIII 也可以帮我们实现热重载,写好代码后,我们不需要重新运行 Xcode 就可以看到我们改动代码之后的效果。

安装

App Store 安装

使用

  1. 安装好之后,在应用程序中找到 injectionIII 打开。

  2. 打开项目,在 AppDelegate 文件的 didFinishLaunchingWithOptions方法中添加如下代码

OC:

#if DEBUG

  // for iOS
 [[NSBundle  bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];

  // for tvOS
 [[NSBundle  bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle"] load];

  // for masOS
 [[NSBundle  bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle"] load];

#endif

Swift:

#if DEBUG

    // for iOS
    Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle")?.load()
    
    // for tvOS:
    Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle")?.load()
    
    // for macOS:
    Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle")?.load()
    
#endif
  1. 在需要进行调试的类中(任意继承自OC的类)加入如下代码

OC:

- (void)injected {
    NSLog(@"I've been injected: %@", self);
    //调试的代码
}

Swift:

@objc func injected() {
    print("I've been injected: (self)")
    //调试的代码
}
  1. 添加完上边代码后,快捷键 COMMAND + R 运行项目。然后我们就可以在 - (void)injected 方法中调试代码,每次改完之后在当前文件下按下 COMMAND + S 保存,就可以在模拟器看到更改代码之后的效果。不需要重新运行整个项目。

对原理感兴趣的可以看下这篇文章:
Injection:iOS热重载背后的黑魔法

你可能感兴趣的:(injectionIII工具:让iOS开发调试实现热重载)