通常我們創(chuàng)建的文件(UIViewController為例)默認是這樣的

但是我們通常都有自己的代碼規(guī)范 比如#pragama mark - 功能分類
怎么才能讓自己創(chuàng)建的文件都默認帶上這些代碼規(guī)范呢?
1. 定位XCode 模版文件路徑
在Finder 中Shit+Command+G 粘貼下面路徑
/Application/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode
然后按照下圖的路徑進入 Cocoa Touch Class.xctemplate文件夾

這個文件夾下面的就是XCode自帶的那些模版文件了。
這里AppleWatch、Playground 也都是對應Command+N的時候出來的對應模版. Project Templates 是新建工程的時候出來的界面。所以如果你在File Templates文件夾下面新建一個文件的時候,你在Command + N 界面的也會看到新的內(nèi)容。
2. 創(chuàng)建自定義模版文件
下面我們打開UIViewControllerSwift或者UIViewControllerObjective-C文件, 一個是Swift中創(chuàng)建的UIViewController 一個是Objective-C中。

是不是很眼熟(就是文章開頭那張圖樣子了),對這就是我們創(chuàng)建的對應語言的
UIViewController模版了!
在XCode文件夾下面的文件夾和文件都是有權限限制,需要輸入密碼(開機密碼)來授予權限。
接下來我們在UIViewControllerObjective-C文件夾的同級文件夾(Cocoa Touch Class.xctemplate)下,復制UIViewControllerObjective-C文件夾然后粘貼。把這個文件夾改成你的自定義基類名稱。
比如你的基類叫CustomBaseViewController,并且你想在OC中用。那么你現(xiàn)在的文件夾名字就該叫CustomBaseViewControllerObjective-C

這里面的.h和.m 文件就是模版文件。我們打開__FIELBASENAME__.m然后修改一下,可以把下面的代碼復制進去做實驗。
//___FILEHEADER___
#import "___FILEBASENAME___.h"
@interface ___FILEBASENAMEASIDENTIFIER___ ()
@end
@implementation ___FILEBASENAMEASIDENTIFIER___
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - 我是個不正經(jīng)的文件
@end
保存一下,我們進行下一步。
3. 讓XCode識別它
到現(xiàn)在我們模版已經(jīng)創(chuàng)建好了,接下來怎么讓XCode也識別它呢?

修改TemplateInfo.plist屬性!
因為XCode文件夾的權限限制問題,直接修改會比較麻煩(當然你也可以把文件夾和文件的權限改一下)。可以把這個文件復制到別的地方,比如桌面,改完了再復制進來。
文件權限修改 右鍵->簡介 頁面底部,把everyone權限改成讀寫
打開長這個樣子。

Command+F 搜索
UIViewController
Duang! 這就是我們要操作的地方了。
在Values數(shù)組下面多加一行

Suffixes是這個文件創(chuàng)建的時候的后綴
比如你想這個給你的所有繼承CustomBaseViewController的文件都有以Controller為后綴

這時候在XCode中創(chuàng)建文件的時候

輸入文件名字,回車鍵

大功告成!
如果最后創(chuàng)建的時候有問題,重啟以下XCode即可!