人猿星球

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

2021-12-22  本文已影响0人  flowerflower
面朝大门,春暖花开

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

备注: 如果项目使用的是组件化的话,需要额外多加一步,否则项目运行起来不起作用
需要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中已经解释, 不耽误正常使用。

上一篇 下一篇

猜你喜欢

热点阅读