iOS UI实时调试神器Injectionlll,高效开发你值得拥有

面朝大门,春暖花开

前言
高质量、高效果以及稳定性是一直是我们探索和努力的方向。
对于写过flutter的笔者来说。command + r 快捷键的功能是多么的实用,而让作为iOS来说。Xcode没有内置的热更新是件很头痛的事情。希望我们强大的Xcode早日内置支持这种让人热爱的功能。
iOS可视图目前只有xibstoryboard。对于写iOS的同学,一般我们调整布局,都是改完之后再重新运行一遍,才能查看结果是否符合预期。如果你的Xcode是i7的处理器那情况还算乐观,如果是i5,估计跑项目则慢。而项目如果使用的是组件化。我相信那应该更慢,笔者公司目前的代码采取的便是组件化模式,运行起来慢,笔者从i5换成了i7效果简直不要太美好,但是终究逃不过断点的等待时长,为此笔者一般都是print进行调试,因为等待实在是太漫长了。如果使用了Injectionlll神器可省去每次重新运行编译的时间,那么很多事情就事半功倍了。

目录
一、OC项目如何使用injectionIII
二、Swift项目如何使用injectionIII
三、问题总结

前期准备步骤

1、AppStore下载InjectionIII安装即可
2、InjectionIII配置
  • 打开InjectionIII -> Open Project->选择你的项目目录

  • 选择的项目会在Open Recent中出现

  • 保持File Watcher的选项勾选


    image.png

备注: 如果项目使用的是组件化的话,需要额外多加一步,否则项目运行起来不起作用
需要Add Directory即可,为了防止初学者不知道为何弄的话,还是录个屏吧。

组件化调试.gif

一、OC项目如何使用injectionIII

1、初始化配置
- (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;
}
2、在需要调用的ViewController中加入如下代码
-(void)injected{
    NSLog(@"I've been injected: %@", self);
    [self viewDidLoad];
   //doing
}
3、修改完UI, 直接command + s就能看到效果
OC效果展示.gif

二、Swift项目如何使用injectionIII

1、初始化配置
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

      #if DEBUG
        Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle")?.load()
        #endif

    return YES;
}

2、在需要调用的ViewController中加入如下代码
    @objc func injected() {
        #if DEBUG
        print("I've been injected: \(self)")
        viewDidLoad()
        self.titleString = "我的"
        self.leftTableView.backgroundColor = UIColor.red
        print("self-----",Const.resourseTitles.first)
        #endif
    }

3、修改完UI, 直接command + s就能看到效果
Swift效果.gif

三、问题总结

1、【跨组件遇到的问题】在主工程项目下加入 injectionIII 的代码后,如果其他模块没有在主工程项目下,修改代码是不起作用。需额外配置组件化路径。
2、如果使用的是swift编码方式在使用的地方必不可少 @objc,否则按command+s并没有什么实际效果
3、该软件的缺点是不能真机调试
4、Your project file seems to be in the Desktop or Documents folder and may prevent InjectionIII working as it has special permissions. 如果控制打印这个。只是警告, 作者在Issue中已经解释, 不耽误正常使用。

你可能感兴趣的:(iOS UI实时调试神器Injectionlll,高效开发你值得拥有)