欣赏于React Native和Android的实时界面展示,想着iOS是否也能不需要每次Cmd+R,重新运行对于深度界面的调试显得尤为不方便,最近有幸看到Injection:iOS热重载背后的黑魔法 一文,而对其实践的结果,虽然对于某些场景仍然有所限制,但对于UI的简单调试则变得简单很多。废话不多说,先让我们配置好相应需求:
1.首先需要安装我们所必须的软件Injectionlll,在这里需要知道该软件的热重载是能在模拟器实现, 真机是无法实现的

2.打开Xcode建立新工程, 然后Open Project ->选择对应的工程路径, 在AppDelegate.m中根据所需平台配置工程

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#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
return YES;
}
3.在任意继承自OC的类中加入如下代码,然后Cmd+S即可重绘UI
- (void)injected{ NSLog(@"reloadUI"); }
网友评论