如果你常使用專案樣板製作你的專案, 那麼 #pragma mark 這個前端處理程式你一定不會感到陌生,它是一個存在於 Clang(LLVM)編譯器中的輔助工具,就如字面上的意思它提供你整個程式碼區段一個標籤,好像你將來在重新檢視你的程式碼時,可以很快的找到你要的函式。
pragma mark
舉個簡單的例子,假設我們將目前這個 Class 下的函式歸類成以下幾個類別,並在對應的 #pragma mark 下鍵入相對應個函式,其架構如下。
#pragma mark - 釋放
- (void)dealloc {
[super dealloc];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
#pragma mark - 主要執行序
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)viewDidUnload {
[super viewDidUnload];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
#pragma mark - 等待事件
- (void)setObservationInfo:(void *)observationInfo {}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {}
#pragma mark - 觸碰事件
- (IBAction)onButton:(id)sender {}
- (IBAction)onDoubleClik:(id)sender {}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {}
@end
當我們需要快速檢視這些分類時,就可以由上方的檔案導覽列得知目前所有標籤下面的函式名稱。
在導覽列中檢視 pragma mark |
ps:可以單純使用下列指令來製作沒有標籤的分隔線。
#pragma mark -
其他相關的輔助工具
在 Clang(LLVM)編譯器中還存在這許多好用的輔助工具來幫助你撰寫程式碼,像是使用 #error 標籤來製作一個類似錯誤的註記來防止誤觸編譯器的執行,或是使用 #warning 製作警告註記等等。
自訂的錯誤語警告註記 |
或是在審閱程式碼時使用相關的註解來輔助,這些註解同樣都可以從編輯器上方的導覽列檢視與切換。
///FIXME:等待修復的bug
///TODO: 等待撰寫的code
///???: 這邊還沒看懂做什麼
///!!!: 這邊也許會有問題
///MARK: 註記
使用導覽列快速檢視切換註記 |
另外,Clang(LLVM)編譯器還有提供更進階的輔助功能,像是關閉特定的錯誤或是警告等等,有興趣的朋友們可以參考Clang 的使用者手冊(Clang 3.4 documentation)
很棒的教學
回覆刪除您好:
刪除謝謝指教!
blogspot大陸這邊被禁掉了,所以在家看不了這個博客。我只能在公司閑下來的時候來逛逛。
回覆刪除特地來留言表達一下對樓主的崇拜之情。非常非常好的技術博客~
提個建議,樓主可否在閒暇時間更新一些有關內存調優方面的講解呢?如果能的話,最好了~~
您好:
刪除原來被禁掉了喔,之前我們也考慮寫在微博上在上,只是還是沒有使用google部落格來的方便,非常謝謝你的支持。
內存優化方面,我們也考慮過,不過目前iOS已經啟用arc機制,我們這邊很多東西都還需要再重新做整理,加上xcode本身就有工具可以幫你檢視內存等使用量,所以目前這部份的資料就沒有這麼多^^",謝謝你的建議。
關於"其他相關的輔助工具"這部份似乎無法在 Block 內部使用
回覆刪除Darktt 您好
刪除感謝您的提醒!