iOS Xcode 热加载

2021-06-01 20:39:15 浏览数 (1)

用了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都有了。

0 人点赞