什么是InjectionIII
InjectionIII是John Holdsworth开发的一款可以动态的将Swift
或者Objective-C
代码在已运行的程序中执行的工具,可以不用重新运行程序,加快调试速度。这款工具可以在Mac AppStore
免费下载,如下所示:
同时作者也将该软件开源了,源代码地址
使用方法
1.从Mac AppStore
下载完成后,打开软件,在电脑右上方任务栏会出现针孔的图标,点击Open Project
,或者Open Recent
,选择工程文件的根文件夹,再点击File Watcher
至选中状态。
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.只能在模拟器中使用