动态调试工具 InjectionIII 使用
2023-01-13 本文已影响0人
林希品
image.gif
image
image.png
image.png
1.App Store里搜索injectioniii
image2.添加引用:
Swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
#if DEBUG
// 把InjectionIII.app换成InjectionX.app
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle")?.load()
#endif
return true
}
Objective-C
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
#if DEBUG
// 用于在Debug模式下使用InjectionIII进行调试,只在模拟器和Debug模式且电脑安装了 InjectionIII 时生效
[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];
#endif
return YES;
}
3.添加Other Linker Flags:-Xlinker-interposable
image.png4.添加工程的监听
选择Open Project,选择你的项目
image
image.png
切换项目需要重做这一步,或者Open Recent切换
5.添加成功与否查看
Commond + R重新编译项目,查看控制台:
image.png
6.使用
说明:
方式一:每次保存,Commond + S,都会触发injected这个方法,在这个方法里面去刷新界面、动态改变界面
方式二:界面跳转,界面重新绘制,或者重新初始化的情况下可以不使用injected方法,比方说可以push或者present到个新的界面,在新的界面上改了后,回退再进来就能直接看到改变。
injected使用示例如下:
Objective-C
- (void)injected {
NSLog(@"reloadUI");
[self viewDidLoad];
[self viewWillAppear:YES];
[self selfDefineMethod];
self.view.backgroundColor = [UIColor whiteColor];
}
Swift
@objc func injected() {
viewDidLoad()
}