13個小技巧幫你征服Xcode

發表於2015-05-04

當談論到iOS開發工具時,有一個肯定是所有iOS開發者都熟悉的,那就是Xcode。Xcode是使所有令人讚歎的iOS app成為可能的驅動力。

Xcode能幫助我們完成非常多的事情,但是這也有點讓人頭疼。對於新手來說,可能會覺得Xcode太過繁重了。而對那些有幾年使用經驗的人來說,還是在不停地學習一些細節來提高生產力。我對新手的建議就是不要想著一下就能學完關於Xcode的所有知識。關注當下最重要的部分,然後再根據經驗慢慢擴充到新的知識。

在本文中,我會提到一些能幫助你提高生產力的內容。這裡面有些內容可能講過就忘了,但有些應該能解決你經常遇到的問題。

  • 你將會學到如何自定義Xcode來提高生產力
  • 你將會學到一些功能來幫助你管理程式碼
  • 你將會學到一些提示來幫助你總體把控工程開發

Xcode Behaviors

Behaviors是一種神奇的東西,能讓Xcode根據你的操作,自動執行一些後續操作。想象一下,你正在執行程式,遇到了一個斷點或者錯誤。預設情況下,Xcode會自動開啟除錯視窗、在當前標籤頁跳轉到出錯的程式碼處,完全打亂了編輯器。現在我們通過設定來阻止這種情況發生。

開啟Xcode 偏好設定,能看到一個叫Behaviors的選項卡。在這裡我們可以定義不同種類的狀態改變時Xcode的行為,例如當構建開始時Xcode要做什麼、當構建成功或失敗時Xcode又要做什麼。你可以讓Xcode播放聲音、開啟新的標籤頁、顯示導航等等。

針對本例,我們想要改變app執行時的Xcode的一些行為。當app因為斷點或錯誤暫停時,我們想要做以下的事情:

  • 播放聲音(Hero音效對我來說不錯,但是你可以換成其他的,包括自定義聲音)
  • 顯示debug標籤頁
  • 顯示debug導航
  • 除錯區域同時顯示變數和控制檯

在這裡我選擇開啟一個新的標籤頁,是因為不想讓Xcode改變我當前的工作狀態。這樣我就能輕鬆回到之前寫程式碼的位置。另外我也沒有關閉Xcode為除錯開啟的一些窗格,整個的體驗是集中在單獨的標籤頁中。
你可以花些時間來探索Xcode其他的行為,根據自己的開發風格找到最合適的。你可能覺得Xcode的某些預設行為很煩人,或許在Behaviors中你就能把它關掉。

管理裝置和模擬器

你有沒有想過,你其實可以管理Xcode中裝置下拉框裡的裝置列表呢?

再想想讀取裝置中的資料庫,從而驗證表裡的資料是否都設定正確了。你是否還遇到過,Xcode的下拉框裡一個模擬器都沒有了?現在開啟Window > Devices。

在這裡你能看到已連線的裝置和可用的模擬器。如果你需要新增或移除模擬器,就點選左下角的+按鈕(移除點選—按鈕)。如果模擬器都找不到了,你可以到這來恢復它們。

最後,這裡另一個有用的功能就是可以下載app的 container。

過去你可能通過訪問模擬器資料夾來獲取資料,但是真機怎麼辦呢?現在獲取儲存的照片、資料庫檔案等等都變得非常容易了,你可以下載一個包含有documents、libarary和temp資料夾的container,這樣就能獲取裝置上的資料了。

更新app的顯示名稱

開發者們經常遇到的一個就是,建立的工程顯示的名字不是自己想要的。我經常看到有些人重新命名和重構(refactor)整個工程,來顯示正確的名稱。如果你知道在工程的info.plist裡新增一個key就能改變app顯示名稱了,那你肯定很高興。這個key就是Bundle display name。

提高可讀性 & Xcode擴充套件

現在有很多外掛都可以提高Xcode的生產力。一些開發者甚至建立了一些非常好的主題來替換Xcode預設主題。說實話,預設主題看起來還是挺不舒服的。那我們怎麼樣才能輕鬆地獲取到這些外掛呢?現在就去alcatraz.io,下載一個非常好用的Xcode包管理器吧。

下面是一些我最近用到的外掛:

  • SCXcodeMinimap:這個外掛和Sublime Text中的那個看起來像。它能夠顯示一個編輯器的縮圖,輕鬆地檢視、滾動程式碼。
  • RevealPlugin:如果你使用Reveal的話,這個外掛能快速啟動Reveal。
  • RealmPlugin:Realm的模型物件的模板檔案。(譯註:Realm是一個面向移動裝置的資料庫。)
  • VVDocumenter-Xcode:幫助你快速生成一個方法的註釋。
  • AdjustFontSize:當你展示程式碼時,你可能需要快速放大字型,這個外掛能讓你通過command+加減號來調整字型大小。
  • Lin:為NSLocalizedString顯示程式碼補全。

有一個正在開發的本地化外掛Rephrase,值得關注。當它釋出之後,就有可能成為另一個節約時間的利器啊。

我目前使用的主題是Dusk,我堅信這個才是預設主題。還有很多顏色主題,你都可以通過Alcatraz來下載。

下載文件和舊版模擬器

當你安裝了一個新版本的Xcode後,你可能會發現你沒有之前iOS系統的模擬器了。當測試app時這就是個問題了。你可以在偏好設定中的下載選項卡中安裝舊版模擬器。

你可以在這下載舊版模擬器,在Window > Devices中管理它們。你還可以下載Xcode沒有預載的文件。

組織原始檔

通過原始檔上方的一個下拉框,你能檢視到所有的屬性和方法。

當你點選這個位置時,下拉框會顯示這個檔案的詳細資訊。在原始碼中你還可以使用例如// FIXME: 或者 // TODO: 或者 // MARK: 來新增標記。

快速開啟檔案

有時你可能需要開啟一個新檔案,但同時還要保留當前檔案。有下面幾種辦法。

你可以開啟assistant editor,然後在那裡顯示檔案。點選View > Assistant Editor > Show Assistant Editor。

你可以雙擊想要開啟的檔案。這會開啟一個新的視窗。

你可以通過 Option+Shift+點選,這會彈出一個框,讓你選擇在哪裡開啟檔案。

跳轉到文件

能快速跳轉到文件將會節省很多時間。你可能正在寫UITableViewDelegate,但是不記得所有相關方法。你可以通過在符號上Command+點選,快速跳轉到文件。

生成文件

下載並安裝外掛VVDocumenter-Xcode,你就不用手動寫註釋程式碼了。只需輸入三個斜槓///就能快速生成註釋。

另一個好處就是在Xcode的文件預覽中,這些註釋也可以顯示出來。在一個方法上Option+點選,就能預覽文件。

建立程式碼片段

如果你經常需要輸入格式完全一樣的程式碼,那程式碼片段就很有用了。例如,我有一個程式碼片段,它能自動填充一個新的tableView或者collectionView類,並且還有我需要的delegate方法。我還有一些小型片段來幫助我快速生成typealias、singleton、gcd等等的程式碼。

要生成程式碼片段,在file inspector中開啟snippent panel。

在編輯器中輸入想要建立的片段。注意,如果需要佔位符的話,輸入 <#placeholder-name#>。選中程式碼,按住一秒,然後拖進程式碼片段區域。

然後你可以編輯片段來新增更多細節。最重要的一點就是“完成快捷鍵”。在編輯器中輸入該關鍵字,就能選擇片段了。或者你可以把程式碼片段從該區域拖到編輯器中。

過兩天我會收集整理我所有的片段並分享出來。

用Chisel改進除錯

Facebook開發了一套LLDB命令來讓除錯更容易一些。如果你還沒有Chisel的話,現在就去Github安裝。為了讓你能明白Chisel到底是幹嘛的,下面我列出了一些我喜歡的命令。這些命令省了我不少時間和腦子去記住那些語法。

  • pviews:遞迴列印key window上的view。
  • visualize:在Mac上的預覽應用中開啟UIImage、CGImageRef、UIView和CALayer。
  • show/hide:顯示或隱藏指定的view或者layer。
  • border/unborder:顯示或隱藏view/layer的邊框,從而找到它在哪。

Chisel還有很多命令,在lldb中輸入help來檢視內建和使用者定義的命令。

版本編輯器

如果你需要檢視一下修改了檔案中的那些內容,你可以利用Xcode內建的版本編輯器,而不是複雜的Git。

你可以通過點選右上角的雙箭頭按鈕來快速開啟版本編輯器,或者通過View > Version Editor > Show Version Editor來開啟。想象一下,有很多不需要提交的測試程式碼,在版本編輯器中都會顯示出來,並且能讓你快速放棄這些修改。你完全可以用source control的介面來幹這個,但用版本編輯器是最簡單的了。

6個值得記住與設定的快捷鍵

有些快捷鍵預設沒有設定,我建議你開啟Preferences > Key Bindings ,根據需要自行修改。

  • Command + / :註釋/取消註釋程式碼
  • Command + [ 或者 ] :向前或向後縮排程式碼
  • Command + 左右方向鍵:移動游標到行首或行尾
  • Control + s :選擇單詞(譯註:預設沒有設定。Key Bindings 對應的key是 Select Word)
  • Option + Command + e:(根據當前範圍遍及選中的單詞)(譯註:預設沒有設定,也不知道到底是個什麼效果。)
  • Option + 左右方向鍵:按單詞移動游標
  • esc:顯示/隱藏自動補全彈出框。

還有很多很多快捷鍵,找到適合你的風格的,活學活用。

要點

在這篇文章中我們提到了關於你最常用到的工具——Xcode的一些內容。我展示的大部分內容都是為了提高我的生產力。我並不是想要追求單純的快(你不會看見我只用一個鍵盤),而是把自己從那些反覆出現的問題中解放出來。當你有更多的經驗時,你就能找到最適合你的方式。這才是關鍵。看看怎麼樣能把你在這篇文章中學到的內容應用起來吧。

相關文章