Xcode 自定義模板實踐
為何要自定義Xcode模板
有時候公司會要求一定的程式碼規範,例如控制器中需要用#pragma mark -
來分割各個方法們,像這樣:
1234567891011121314151617181920212223 | #pragma mark - LifeCycle-(void)dealloc{}-(void)viewDidLoad{}-(void)viewWillAppear:(BOOL)animated{}#pragma mark - UITextFieldDelegate-(BOOL)textFieldShouldReturn:(UITextField *)textField{}#pragma mark - Public#pragma mark - Private |
這樣不僅可以分割程式碼,方便閱讀,而且可以方便找到某個方法:
但是每建立一個類就寫一遍這些是不是有點繁瑣呢,這個時候就要用到Xcode的自定義模板功能了。
修改系統模板樣式
Xcode系統模板的路徑是/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/
File Templates
和工程模板Project Templates
,分別對應建立檔案時的選項和建立工程時的選項:
建立檔案介面
建立工程介面
我們用的最多就是File Templates/Source/Cocoa Touch Class.xctemplate
裡面的模板。裡面長的是這樣的:
例如我們今天需要改UIViewController
的模板,就需要改其中的UIViewControllerObjective-C
、 UIViewControllerSwift
、UIViewControllerXIBObjective-C
、UIViewControllerXIBSwift
。他們的區別從名字上就能看出來,就是OC與Swift,是否用Xib的區別。
我們以OC並且不用Xib為例,開啟UIViewControllerObjective-C中的___FILEBASENAME___.m
檔案:
12345678910111213141516171819202122232425262728293031323334353637 | //// ___FILENAME___// ___PROJECTNAME___//// Created by ___FULLUSERNAME___ on ___DATE___.//___COPYRIGHT___//#import "___FILEBASENAME___.h"@interface___FILEBASENAMEASIDENTIFIER___()@end@implementation ___FILEBASENAMEASIDENTIFIER___-(void)viewDidLoad{[superviewDidLoad];// Do any additional setup after loading the view.}-(void)didReceiveMemoryWarning{[superdidReceiveMemoryWarning];// Dispose of any resources that can be recreated.}/*#pragma mark - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigation- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller.}*/@end |
是不是很熟悉,就是我們建立一個控制器後.m裡面的程式碼。其中的一些巨集的意義是:
巨集名 | 意義 |
---|---|
___FILENAME___ |
檔名包括字尾 |
___PROJECTNAME___ |
工程名 |
___FULLUSERNAME___ |
使用者的名字 |
___DATE___ |
當前日期,年/月/日 |
___COPYRIGHT___ |
版權 |
___FILEBASENAME___ |
不帶字尾的檔名 |
___FILEBASENAMEASIDENTIFIER___ |
不帶字尾的檔名 |
這個檔案預設是不讓修改的,我們可以修改他的許可權,或者複製一份到別處,修改完替換原檔案。總之修改其中的內容為:
1234567891011121314151617181920212223242526272829303132333435 | //// ___FILENAME___// ___PROJECTNAME___//// Created by ___FULLUSERNAME___ on ___DATE___.//___COPYRIGHT___//#import "___FILEBASENAME___.h"@interface___FILEBASENAMEASIDENTIFIER___()@end@implementation ___FILEBASENAMEASIDENTIFIER___#pragma mark - LifeCycle-(void)viewDidLoad{[superviewDidLoad];}#pragma mark - UITableViewDelegate#pragma mark - Public#pragma mark - Private#pragma mark - Getter#pragma mark - Setter@end |
然後把這個檔案去替換原來的檔案。替換成功後新建一個控制器,就會是我們自定義的結構了,如果沒生效的話,可以重啟下Xcode哦:
新建一個控制器相信到這裡,其他的模板你也一定會改了吧。
使用自定義模板
如果更改系統模板會有問題,就是xcode更新後我們所做的更改就沒有了。
為了解決這個問題,我們可以在~/Library/Developer/Xcode/Templates
路徑下新建一個Templates
資料夾,再在Templates
裡新建一個Custom
的資料夾,把系統的Cocoa Touch Class.xctemplate
複製進去,然後進行修改就可以了。
這樣在建立檔案的時候,在最下面就會有你自定義的模板選項:
選擇模板好了,到這裡大家應該都熟悉了Xcode模板的基本使用,快去探索更多高階用法吧!