美文网首页人猿星球
iOS UI实时调试神器Injectionlll,高效开发你值得

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

作者: flowerflower | 来源:发表于2021-12-22 11:59 被阅读0次
    面朝大门,春暖花开

    前言
    高质量、高效果以及稳定性是一直是我们探索和努力的方向。
    对于写过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,高效开发你值得

        本文链接:https://www.haomeiwen.com/subject/cdkxqrtx.html