iOS开发使用InjectionIII

1,444 阅读1分钟

什么是InjectionIII

InjectionIII是John Holdsworth开发的一款可以动态的将Swift或者Objective-C代码在已运行的程序中执行的工具,可以不用重新运行程序,加快调试速度。这款工具可以在Mac AppStore免费下载,如下所示:

image-20200525192215540

同时作者也将该软件开源了,源代码地址

使用方法

1.从Mac AppStore下载完成后,打开软件,在电脑右上方任务栏会出现针孔的图标,点击Open Project,或者Open Recent,选择工程文件的根文件夹,再点击File Watcher至选中状态。

image-20200525192810711

2.打开Xcode工程,在Appdelegate.m文件didFinishLaunchingWithOptions方法里添加如下代码

#if DEBUG
    // iOS
    [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];
    // tvOS
    //[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle"] load];
    // macOS
    //[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle"] load];
#endif
#if DEBUG
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle")?.load()
//for tvOS:
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle")?.load()
//Or for macOS:
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle")?.load()
#endif

3.在你编辑的ViewController中添加如下方法

- (void)injected {

}

在该方法中添加你想要更改的代码,按Command + S运行。

注意

1.重新运行不会调用injected方法,因为该方法并未被实际调用

2.只能在模拟器中使用