本文由CocoaChina翻譯組成員唧唧歪歪(博客)翻譯自David McGraw的博客
原文:13 Xcode Tips That Will Help You Conquer Xcode
當談論到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的一些內容。我展示的大部分內容都是為了提高我的生產力。我並不是想要追求單純的快(你不會看見我只用一個鍵盤),而是把自己從那些反復出現的問題中解放出來。當你有更多的經驗時,你就能找到最適合你的方式。這才是關鍵。看看怎麼樣能把你在這篇文章中學到的內容應用起來吧。