Xcode使用技巧 code snippets 自定義代碼塊的使用和保存、導入

作爲碼農來講,IDE絕對就是你的紙和筆,掌握IDE的使用技巧可以大幅度的提升編碼效率,擺脫枯燥繁瑣的重複勞作。

最近爲了適配iOS 13頻繁更換設備升級系統,來回折騰了好幾遍開發環境,包括導入code snippets,今天就寫一寫這個新手老手都應該用起來的技巧(其實就是懶,寫到這當筆記)。

老規矩,看啥都不如看官方文檔,蘋果爸爸爲了Apple開發者愉悅的開發可是煞費苦心,文檔事無鉅細。

Xcode官方首頁
https://developer.apple.com/xcode/
這裏有所有關於Xcode的資料入口,每當新版本Xcode推出新版本,建議大家都可以來逛逛,學習一番IDE的新特性(槽點)

Xcode help
https://help.apple.com/xcode/mac/current/
Xcode幫助文檔,你每天都用的IDE所有小祕密都在這裏了,你足夠了解它嗎?

code snippets 的使用
https://help.apple.com/xcode/mac/current/#/dev2b24f6f93
如果鏈接失效 可以在幫助文檔首頁搜索

啥是 code snippets ?

其實就是創建一個輸入提示,通過關鍵字IDE會給出建議的代碼列表,用戶選擇之後就可以快速插入大段代碼。
在Xcode 10 中的位置和使用效果如下
代碼塊位置輸入提示

在xcode 11中,代碼塊的位置有所變化,UI組件、圖片資源、色值、代碼塊等等聚合在了一個窗口中,如圖
Xcode 11

創建代碼塊

選中代碼,右鍵快捷菜單,選擇 create code snippets
進到編輯頁面
新建

在編輯框裏填名稱關鍵字等
填寫信息

Title: 輸入代碼段庫中顯示的代碼段的名稱。

Summary: 輸入代碼段庫中顯示的代碼段的說明。

Platform: 從彈出菜單中選擇片段的平臺。

Language: 從彈出菜單中選擇編程或腳本語言。

Completion Shortcut: 輸入可在源編輯器中使用的代碼段的關鍵字。

Completion Scope: 選擇代碼段的使用範圍。
	All: 可以插入任何地方。
 	String or Comment:可以插入允許字符串或註釋的位置。
 	Top Level: 即將到來

我們創建了一個字符串屬性,鍵入關鍵字 c3 就會出現該代碼塊,按 retun 鍵即可輸入整個屬性的代碼
輸入

佔位符

佔位符可以方便我們快速的選中參數位置,編輯自定義的名稱。
使用格式<#[TOKEN NAME]#>插入字符串,在代碼段中包含標記(例如方法的參數值的佔位符)。 例如,字符串<#value#>會將標記爲value的標記添加到代碼段。
值得一提的是,當你輸入完成<##>,符號會自自動消失。
上面字符串屬性的代碼塊寫法就是

@property (nonatomic,strong)NSString *<#test#>;

代碼塊的保存和導入

目前Xcode並沒有提供導出或者導入的功能,自定義代碼塊的數據只是在Xcode目錄下保存,具體爲

~/Library/Developer/Xcode/UserData/CodeSnippets

保存的話就是將該目錄的文件拷貝保存,導入也是將文件拷貝到該目錄。
如果在重裝Xcode或者是恢復系統的時候沒有保存文件,那麼你的熟悉代碼塊就離你而去了。

可以優化的方式是,通過雲盤或者git雲端保存文件,實時更新或者定時備份。

文件位置

常用的代碼塊

這裏分享一下 TODO等標記,和 #pragma mark 一樣在導航欄中有明顯的分隔效果,可以通過搜索、導航快速的找到標記位置,在日常工作中標記未完成的任務或者待解決的bug位置十分好用。
其他的代碼塊會陸續更新,讀者們如果有覺得很方便的定義也歡迎評論在下方,希望大家代碼寫的越來越6,少一點枯燥,多一點樂趣。

標記

#pragma mark - <#mark#>

//TODO: <#text#>

//MARK: <#text#>

//FIX: <#text#>

屬性

@property (nonatomic, strong) <#Class#> *<#object#>;

@property (nonatomic, weak) <#Class#> *<#object#>;

@property (nonatomic, copy) NSString *<#string#>;

@property (nonatomic, assign) <#Class#> <#property#>;

@property (nonatomic, weak) id<<#protocol#>> <#delegate#>;

@property (nonatomic, copy) <#returnType#>(^<#blockName#>)(<#arguments#>);

待續

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章