有时候,我们需要对一些类的代码做一些约定的规范,比如VC的一些#pragma mark,我们希望能将各个功能的代码都能放到对应的mark下;在定义好规范之后,有些工作是需要手动去完成的(一般都是复制粘贴),其实我们可以创建出自定义的模版,然后集成到Xcode中,这样创建出来的类就默认包含了我们定义的规范的内容。
创建
- 获取系统提供的模版,目录如下
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates
-
拷贝系统的模版加以定制
比如:现在需要定制UIViewController类的模版,该类的模版在Cocoa Touch Class.xctemplate目录下,找到UIViewControllerObjective-C文件夹,拷贝出来修改
图片.png
编辑.m文件增加定制的内容
//___FILEHEADER___
#import "___FILEBASENAME___.h"
@interface ___FILEBASENAMEASIDENTIFIER___ ()
@end
@implementation ___FILEBASENAMEASIDENTIFIER___
#pragma mark - LifeCycle
- (void)dealloc {
#if DEBUG
NSLog(@"%s", __FUNCTION__);
#endif
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self setupUI];
}
#pragma mark - Public Methods
#pragma mark - Actions
#pragma mark - Delegate
#pragma mark - Http && DB
#pragma mark - Private Methods
- (void)setupUI {
self.title = @"";
}
#pragma mark - Getter && Setter
@end
注意:TemplateInfo.plist文件也需要拷贝出来,该文件描述了创建时的配置信息
安装
只需要将定制的模版的文件夹,整个复制到下面的目录下,如果没有目录就创建一个
~/Library/Developer/Xcode/Templates/File Templates/
复制的过程可以手动或者写脚本
-
手动:将模版拷贝到
图片.png~/Library/Developer/Xcode/Templates/File Templates/
#!/usr/bin/env sh
SOURCE_DIR=$(dirname "$0")
TEMPLATES_DIR="$HOME/Library/Developer/Xcode/Templates"
FILE_TEMPLATES_DIR="$TEMPLATES_DIR/File Templates"
CUSTOM_TEMPLATES_DIR="$FILE_TEMPLATES_DIR/Custom"
echo "Installing templates to $CUSTOM_TEMPLATES_DIR"
mkdir -p "$CUSTOM_TEMPLATES_DIR"
cp -R "$SOURCE_DIR/Custom.xctemplate" "$CUSTOM_TEMPLATES_DIR"
echo "Finished"
将脚本放在你的xxx.xctemplate的同级目录,然后执行./install-template.sh
;注意要用xxx.xctemplate
替换脚本中的Custom.xctemplate
使用
-
安装成功之后,重启Xcode就可以在新建File的时候看到我们的模版了
图片.png
- 例如创建VC 图片.png
-
创建成功之后,效果如下
#import "TemplateTestViewController.h"
@interface TemplateTestViewController ()
@end
@implementation TemplateTestViewController
#pragma mark - LifeCycle
- (void)dealloc {
#if DEBUG
NSLog(@"%s", __FUNCTION__);
#endif
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self setupUI];
}
#pragma mark - Public Methods
#pragma mark - Actions
#pragma mark - Delegate
#pragma mark - Http && DB
#pragma mark - Private Methods
- (void)setupUI {
self.title = @"";
}
#pragma mark - Getter && Setter
@end
结语
这里举了个例子讲VC的规范通过定制模版来减少人工的拷贝粘贴,后续其他的一些规范都可以通过定制模版的方式来处理
网友评论