查看原文
其他

一个好用的 Xcode 扩展:GHWXcodeExtension

黑化肥发灰 小集 2022-03-15

作者 | 黑化肥发灰 
来源 | Github:https://github.com/guohongwei719

在 Xcode8 以前,开发者可以在 Xccode 运行时通过注入代码来实现插件的功能。插件可以在Alcatraz 上面提交和分发。不过 Xcode8 禁止了该方式的插件安装,转而向开发者提供了Xcode Source Editor Extension(以下简称 Extension)的方式来做插件。平时写代码过程中发现有很多代码都是重复的,属于无脑代码,而且团队协作中统一的代码格式规范非常重要,因此试图通过 Extension 解决这些问题,从而开发了这个工具。

实现的功能:

• 初始化自定义view、UICollectionViewCell、UITableViewCell、viewController,自动删除无用代码和添加默认代码;

• 为属性自动添加懒加载代码、对应协议声明和协议方法,主要有 UITableView\UICollectionView\UIScrollView\UIButton\UILabel\UIImageView;

• 选中一个类,文件顶部自动添加对应的 import;

• 给 import 分组排序去重,从上到下为 主类头文件、viewController、view、manager & logic、第三方库、model、category、其他。

实现的功能(注:均可配置快捷键,实现一键操作)

1) 初始化自定义view、UICollectionViewCell、UITableViewCell、viewController,自动删除无用代码和添加默认代码;

2) 为属性自动添加懒加载代码、对应协议声明和协议方法,主要有 UITableView\UICollectionView\UIScrollView\UIButton\UILabel\UIImageView;

注意:需要添加懒加载代码的属性需要被光标选中

3) 选中一个类,文件顶部自动添加对应的 import

4) 给 import 分组排序去重,从上到下为 主类头文件、viewController、view、manager & logic、第三方库、model、category、其他。

注意:

• viewController 后缀小写必须为 "controller.h"、"vc.h";

• view 后缀小写必须为 "view.h"、"bar.h"、"cell.h";

• manager & logic 后缀小写必须为"manager.h"、"logic.h"、"helper.h"、"services.h"、"service.h"。

安装配置方法

1) 将项目 clone 下来,如果不想 clone 项目,直接去 release 下面下载生成的 GHWXcodeExtension.zip,链接 https://github.com/guohongwei719/GHWXcodeExtension/releases/tag/v1.0.0 ,解压即可,然后跳到第三步,如下图

2) 将 clone 的项目编译成功,到 Products 下,选择 GHWXcodeExtension.app 右键,选择 Show in Finder

3) 将 GHWXcodeExtension 复制到应用程序下面,双击打开

4) 到 系统偏好设置 找到 扩展,选择 Xcode Source Editor,选中 GHWExtension

5) 打开项目以后,可以在 Xcode 菜单栏,选择 Editor, 可以看到 GHWExtension 出现在最下面

6) 选择 GHWExtension,出现可以使用的功能选项,顾名思义

7) 三个功能选项都可以配置快捷键,实现一键操作,推荐分别设置为 option+z\option+x\option+c,如下图

使用注意事项

使用 addLazyCode 功能的时候,如果添加了代码后想撤销,使用 command + z,这时候 Xcode 可能会 crash,这应该是 Xcode 本身的一个 bug,所以需要注意一下,正常情况下添加以后也不会撤销,如果要撤销手动删除也很方便,即使 crash 了再打开就行了,打开以后是删除状态。希望苹果能尽快修复这个 bug。

调试 GHWXcodeExtension

1) 选择 GHWExtension scheme

2) 运行,选择 xcode,点击 run

3) 选择一个项目



推荐阅读
• iOS调试Block引用对象无法被释放的一个小技巧
• XCode启动参数和环境变量
• iOS代码瘦身实践:删除无用的方法
• Swift 游戏开发之「能否关个灯」


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存