用了Flutter之后感觉最方便的就是热加载,修改后点击热加载后马上就可以看效果,为什么Xcode反而不能,如果页面层级很深重新启动加上页面跳转很浪费时间。
不过搜索一下幸好还有injectionIII iOS代码注入工具,Apps Store搜索,下载安装好之后,OpenProject选择项目的根目录就可以了。
截屏2021-05-26 16.11.41.png
didFinishLaunchingWithOptions 加入如下代码:
代码语言:javascript复制- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
//Objective-C
#if DEBUG
NSBundle *injectionBundle = [NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"];
[injectionBundle load];
#endif
return YES;
}
在需要调用的ViewController中加入如下代码
代码语言:javascript复制-(void)injected{
NSLog(@"I've been injected: %@", self);
[self viewDidLoad];
}
注意
我在桌面上新建一个测试项目,修改后cmd s并没有什么改变,还有如下信息
代码语言:javascript复制? InjectionIII connected /Users/Destiny/Desktop/HotLoad/HotLoad.xcodeproj
? Watching files under /Users/Destiny/Desktop/HotLoad
? ? ⚠️ Your project file seems to be in the Desktop or Documents folder and may prevent InjectionIII working as it has special permissions.
意思就是您的项目文件似乎位于Desktop或Documents文件夹中,并且由于具有特殊权限,因此可能阻止InjectionIII工作。
所以把项目放到其他目录就可以了,而且修改后也不需要cmd s运行,修改后马上就可以看到效果,还是很强大的。
缺点
不能真机调试,不过先在模拟器调试好后在用真机也算方便。
寄语
真希望苹果在Xcode中加入热加载功能,好歹人家Flutter都有了。