前言
高质量、高效果以及稳定性是一直是我们探索和努力的方向。
对于写过flutter
的笔者来说。command + r
快捷键的功能是多么的实用,而让作为iOS
来说。Xcode
没有内置的热更新是件很头痛的事情。希望我们强大的Xcode
早日内置支持这种让人热爱的功能。
iOS
可视图目前只有xib
、storyboard
。对于写iOS
的同学,一般我们调整布局,都是改完之后再重新运行一遍,才能查看结果是否符合预期。如果你的Xcode
是i7的处理器那情况还算乐观,如果是i5
,估计跑项目则慢。而项目如果使用的是组件化。我相信那应该更慢,笔者公司目前的代码采取的便是组件化模式,运行起来慢,笔者从i5换成了i7效果简直不要太美好,但是终究逃不过断点的等待时长,为此笔者一般都是Injectionlll
神器可省去每次重新运行编译的时间,那么很多事情就事半功倍了。
目录
一、OC项目如何使用injectionIII
二、Swift项目如何使用injectionIII
三、问题总结
前期准备步骤
1、AppStore下载InjectionIII安装即可
2、InjectionIII配置
-
打开InjectionIII -> Open Project->选择你的项目目录
-
选择的项目会在Open Recent中出现
-
保持File Watcher的选项勾选
image.png
备注: 如果项目使用的是组件化的话,需要额外多加一步,否则项目运行起来不起作用
需要Add Directory即可,为了防止初学者不知道为何弄的话,还是录个屏吧。
一、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中已经解释, 不耽误正常使用。
网友评论