背景
在团队进行项目开发的时候,一般都会统一代码风格,以方便代码的维护。
比如在以 Swift
为主的工程中,并不存在头文件的概念,声明与实现都是放在同一个文件,如果不对代码按一定规则进行分割,那在较复杂的对象文件中,对于不同的开发者来说,维护起来的成本要高上不少。
但是统一代码风格,则要求每个参与项目的开发者每个源码文件都按照规范来编写,既繁琐又浪费时间,所以可以借助 Xcode
的自定义模板功能来完成,既实现统一规范,同时不耗费额外的时间。
创建模板
Xcode 版本:Version 8.0 (8A218a)
系统模板
Xcode
系统模板的路径是 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/
,文件夹里面有文件模板 File Templates
和工程模板 Project Templates
,分别对应创建文件时的选项和创建工程时的选项:
接下来,可以模仿 Cocoa Touch Class 模板 (路径:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/Source/Cocoa Touch Class.xctemplat
)创建自定义模板。
自定义模板
创建自定义模板,我们需要将对应的模板文件放到 /Users/xxx/Library/Developer/Xcode/Templates/File Templates
(xxx
为用户名)下,新建一个 Custom
的文件夹,然后按下图所示创建对应的文件(可以从系统的Cocoa Touch Class.xctemplate
复制对应的文件过来):
Objective-C
、Swift
是模板使用对应语言___FILEBASENAME___
:模板内容格式声明TemplateIcon
是模板对应的图标TemplateInfo.plist
:是模板内容说明
修改 Swift
文件夹下的 ___FILEBASENAME___.swift
文件为(Objective-C
此处不举例):
//// ___FILENAME___// ___PROJECTNAME___//// Created by ___FULLUSERNAME___ on ___DATE___.//___COPYRIGHT___//import UIKit// MARK: - 外部接口extension ___FILEBASENAMEASIDENTIFIER___ { }// MARK: - 事件响应extension ___FILEBASENAMEASIDENTIFIER___ { }public class ___FILEBASENAMEASIDENTIFIER___: UIViewController { // MARK: - 生命周期 public override func viewDidLoad() { super.viewDidLoad() setupParameter() setupUI() layoutPageSubviews() } public override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } // MARK: - 界面初始化 /// 初始化UI fileprivate func setupUI() { } /// 初始化布局 fileprivate func layoutPageSubviews() { } /// 初始化参数 fileprivate func setupParameter() { } // MARK: - 内部接口 // MARK: - 公共成员变量 // MARK: - 私有成员变量 // MARK: - 子控件 // MARK: - 测试 }复制代码
现在可以选中刚刚创建的文件模板: