背景
在團(tuán)隊(duì)進(jìn)行項(xiàng)目開發(fā)的時候蜈首,一般都會統(tǒng)一代碼風(fēng)格,以方便代碼的維護(hù)睦疫。
比如在以 Swift
為主的工程中莹菱,并不存在頭文件的概念,聲明與實(shí)現(xiàn)都是放在同一個文件文捶,如果不對代碼按一定規(guī)則進(jìn)行分割荷逞,那在較復(fù)雜的對象文件中,對于不同的開發(fā)者來說粹排,維護(hù)起來的成本要高上不少种远。
但是統(tǒng)一代碼風(fēng)格,則要求每個參與項(xiàng)目的開發(fā)者每個源碼文件都按照規(guī)范來編寫顽耳,既繁瑣又浪費(fèi)時間坠敷,所以可以借助 Xcode
的自定義模板功能來完成,既實(shí)現(xiàn)統(tǒng)一規(guī)范斧抱,同時不耗費(fèi)額外的時間常拓。
創(chuàng)建模板
Xcode 版本:Version 8.0 (8A218a)
系統(tǒng)模板
Xcode
系統(tǒng)模板的路徑是 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/
,文件夾里面有文件模板 File Templates
和工程模板 Project Templates
辉浦,分別對應(yīng)創(chuàng)建文件時的選項(xiàng)和創(chuàng)建工程時的選項(xiàng):
接下來弄抬,可以模仿 Cocoa Touch Class 模板 (路徑:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/Source/Cocoa Touch Class.xctemplat
)創(chuàng)建自定義模板。
自定義模板
創(chuàng)建自定義模板宪郊,我們需要將對應(yīng)的模板文件放到 /Users/xxx/Library/Developer/Xcode/Templates/File Templates
(xxx
為用戶名)下掂恕,新建一個 Custom
的文件夾拖陆,然后按下圖所示創(chuàng)建對應(yīng)的文件(可以從系統(tǒng)的Cocoa Touch Class.xctemplate
復(fù)制對應(yīng)的文件過來):
-
Objective-C
、Swift
是模板使用對應(yīng)語言 -
___FILEBASENAME___
:模板內(nèi)容格式聲明 -
TemplateIcon
是模板對應(yīng)的圖標(biāo) -
TemplateInfo.plist
:是模板內(nèi)容說明
修改 Swift
文件夾下的 ___FILEBASENAME___.swift
文件為(Objective-C
此處不舉例):
//
// ___FILENAME___
// ___PROJECTNAME___
//
// Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
//
import UIKit
// MARK: - 外部接口
extension ___FILEBASENAMEASIDENTIFIER___ {
}
// MARK: - 事件響應(yīng)
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() {
}
/// 初始化參數(shù)
fileprivate func setupParameter() {
}
// MARK: - 內(nèi)部接口
// MARK: - 公共成員變量
// MARK: - 私有成員變量
// MARK: - 子控件
// MARK: - 測試
}
現(xiàn)在可以選中剛剛創(chuàng)建的文件模板: