天天看點

那些好用的iOS開發工具 那些好用的iOS開發工具

那些好用的iOS開發工具

Jun 29th, 2014

那些好用的iOS開發工具 那些好用的iOS開發工具

版權說明

本文首發于《程式員》雜志2014年6月刊,未經允許,請勿轉載。

前言

從蘋果發明iPhone起,AppStore上的一個又一個類似flappy bird的一夜暴富的故事刺激着大量開發者加入移動開發大軍。随着這些開發者出現的,還有大量友善iOS開發者的各種工具。這些工具作為整個應用開發生态鍊的重要一環,極大地友善了廣大應用開發者,節省了應用開發的時間。

本文将從應用工具、指令行工具、插件工具3個方面,介紹這些優秀的應用。

圖形應用工具

Charles

那些好用的iOS開發工具 那些好用的iOS開發工具

Charles(http://www.charlesproxy.com)是在Mac下常用的截取網絡封包的工具,在做iOS開發時,我們為了調試與伺服器端的網絡通訊協定,常常需要截取網絡封包來分析。Charles通過将自己設定成系統的網絡通路代理伺服器,使得所有的網絡通路請求都通過它來完成,進而實作了網絡封包的截取和分析。

Charles詳細的使用說明,歡迎閱讀我的文章:《iOS開發工具-網絡封包分析工具Charles》

界面調試

PonyDebugger(https://github.com/square/PonyDebugger)、Reveal(http://revealapp.com/)、Spark Inspector(http://sparkinspector.com/)是三個常用的界面調試工具,可以在程式運作時動态調試iOS應用界面。PonyDebugger是免費并且開源的,後兩者是收費的,不過功能更加強大。

對于動态或複雜的互動界面,手寫UI的是不可避免的,而Reveal一類的工具可以友善我們檢視控件的相應屬性是否正常,并且可以在程式運作時,動态地修改界面元素。這樣就不用反複地修改代碼并且重新開機程式了。

xScope

xScope(http://xscopeapp.com/)是一類與界面開發相關的工具集。對于iOS開發,比較好用的功能包括它的放大鏡取色工具、标尺工具等。其中放大鏡取色工具可以将取到的多個色集收集起來,友善後續使用,并且支援直接粘貼成相關的程式顔色代碼。

xScope是收費軟體,對于未付費版本,其功能有一些限制。

ImageOptim

ImageOptim(http://imageoptim.com/)是一個圖象壓縮的免費工具。iOS工程預設使用的是 pngcrush 指令來壓縮圖檔,不過其壓縮比率其實不高。對于應用中圖檔資源比較多的讀者,可以嘗試使用 ImageOptim 來達到最大的圖檔壓縮效果。

如果你從未嘗試過ImageOptim一類的圖檔壓縮工具,那麼第一次給IPA檔案瘦身的效果應該是比較驚人的。我個人的經驗是,初次使用時ImageOptim能減少至少10%的應用圖檔資源占用。

ImageOptim的實作原理是使用各種開源的圖像壓縮工具,然後取效果最好的那一個。它嘗試的工具包括:PNGOUT, Zopfli, Pngcrush, AdvPNG, extended OptiPNG, JpegOptim, jpegrescan, jpegtran 和 Gifsicle。

安裝方式是從其官方網站(http://imageoptim.com/)上下載下傳程式檔案,拖動到“應用程式”目錄即可。下圖是本篇文章所有的配圖,可以看到使用ImageOptim達到了29.5%的體積縮小。

那些好用的iOS開發工具 那些好用的iOS開發工具

馬克鳗

馬克鳗(http://www.getmarkman.com/)是國人開發的一款免費标注工具,可以友善地在美術輸出的設計稿上标注相應界面元素的大小,顔色,邊距,說明等。

指令行工具

CocoaPods

那些好用的iOS開發工具 那些好用的iOS開發工具

每種語言發展到一個階段,就會出現相應的依賴管理工具或者是中央代碼倉庫。比如Java的maven,Nodejs的npm等。而CocoaPods(http://cocoapods.org/)是為iOS程式提供依賴管理的工具。開發iOS項目不可避免地要使用第三方開源庫,CocoaPods的出現使得我們可以節省設定和更新第三方開源庫的時間。

在我開發猿題庫用戶端時,其使用了24個第三方開源庫。在沒有使用CocoaPods以前,我需要:

  1. 把這些第三方開源庫的源代碼檔案複制到項目中,或者設定成git的submodule。
  2. 對于這些開源庫通常需要依賴系統的一些framework,我需要手工地将這些framework一一增加到項目依賴中,比如通常情況下,一個網絡庫就需要增加以下framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, zlib。
  3. 對于某些開源庫,我還需要設定

    -licucore

    或者 

    -fno-objc-arc

    等編譯參數
  4. 管理這些依賴包的更新。

這些體力活雖然簡單,但毫無技術含量并且浪費時間。在使用CocoaPods之後,我隻需要将用到的第三方開源庫放到一個名為Podfile的檔案中,然後執行

pod install

。CocoaPods就會自動将這些第三方開源庫的源碼下載下傳下來,并且為我的工程設定好相應的系統依賴和編譯參數。

使用CocoaPods還需要注意以下幾點:

  1. 需要使用CocoaPods生成的 .xcworkspace 檔案來打開工程,而不是以前的 .xcodeproj 檔案。
  2. 每次更改了Podfile檔案,你需要重新執行一次

    pod update

    指令。
  3. 當你執行

    pod install

    之後,除了Podfile外,CocoaPods還會生成一個名為

    Podfile.lock

    的檔案,你應該把這個檔案加入到版本管理中。因為Podfile.lock會鎖定目前各依賴庫的版本,之後如果多次執行

    pod install

     不會更改版本,要

    pod update

    才會改

    Podfile.lock

    了。這樣的好處是:當多人協作的時候,可以保證所有人的第三庫環境是完全一樣的。

詳細的使用說明,歡迎閱讀我的文章:《用CocoaPods做iOS程式的依賴管理》

nomad

nomad(http://nomad-cli.com/)是一個友善你操作蘋果開發者中心(Apple Developer Center)的指令行工具,可以做的事情包括友善地添加測試裝置,更新證書檔案,增加App id,驗證IAP的憑證等。

安裝方式:

<span class="line-number">1</span>
      
gem install nomad-cli
           

安裝完後,首先執行

ios login

,你的Developer賬号密碼會被它存儲到Keychain中,之後就可以用指令行來完成各種背景操作了,例如:

添加測試裝置:

<span class="line-number">1</span>
      
ios devices:add "TangQiaos iPhone"=<Device Identifier>
           

更新證書檔案:

<span class="line-number">1</span>
      
ios profiles:devices:add TangQiao_Profile "TangQiaos iPhone"=<Device Identifier>
           

nomad還有很多功能,建議大家閱讀其官方網站的文檔進一步學習。

xctool

xctool(https://github.com/facebook/xctool)是facebook開源的一個iOS編譯和測試的工具。使用它而不是用Xcode的UI界面是因為它是一個純指令行工具。比如:我們可以使用xctool在指令生下進行編譯和單元測試,然後将測試結果內建到Jenkins中,這樣就實作了自動化的持續內建。雖然蘋果也在OSX Server上推出了自己的自動化內建工具BOT,但其配置和使用上現在仍然不太友善。

安裝xctool可以使用brew指令:

<span class="line-number">1</span>
      
brew install xctool
           

使用xctool編譯項目可以使用如下指令:

<span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
      
path/to/xctool.sh \
  -project YourProject.xcodeproj \
  -scheme YourScheme \
  build
           

使用xctool執行單元測試,可以使用如下指令:

<span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
      
path/to/xctool.sh \
  -workspace YourWorkspace.xcworkspace \
  -scheme YourScheme \
  test
           

xctool還有很多功能,建議大家閱讀xctool官方網站的文檔進一步了解更多的功能。

appledoc

appledoc(https://github.com/tomaz/appledoc)是一個從源碼中抽取文檔的工具。

對于開發者來說,文檔最好和源碼在一起,這樣更新起來更加友善和順手。象Java一類的語言本身就自帶javadoc指令,可以從源碼中抽取文檔。而appledoc就是一個類似javadoc的指令行程式,可以從iOS工程的源代碼中抽取相應的注釋,生成幫助文檔。

相對于其它的文檔生成工具,appledoc的優點是:

  • 它預設生成的文檔風格和蘋果的官方文檔是一緻的。
  • appledoc就是用objective-c寫的,必要的時候調試和改動也比較友善。
  • 它可以生成docset,并且內建到xcode中。內建之後,在相應的API調用處,按住option再單擊就可以調出相關的幫助文檔。
  • 它沒有特殊的注釋要求,相容性高。

安裝appledoc可以直接使用brew指令:

<span class="line-number">1</span>
      
brew install appledoc
           

使用時切換到iOS工程目錄下,執行以下操作即可,appledoc會掃描目前路徑下的所有檔案,然後生成好文檔放到doc目錄下。你也可以用appledoc —help檢視所有可用的參數。

<span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
      
appledoc -o <output_path> \
--project-name <project_name> \
--project-company <project_company> .
           

詳細的使用介紹,歡迎閱讀我的文章:《使用Objective-C的文檔生成工具:appledoc》

Xcode插件

Xcode是iOS的內建開發環境,雖然蘋果一直在不斷改進Xcode,但程式員總是有各種新奇的想法和需求,當Xcode無法滿足他們時,于是他們就會通過插件的方式來為Xcode增加新的功能。本節将會給大家介紹一些常用的Xcode增強插件。

Xcode所有的插件都安裝在目錄

~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/

下,每個插件為一個子目錄,你也可以手工切換到這個目錄來增加或删除插件。

Alcatraz

那些好用的iOS開發工具 那些好用的iOS開發工具

Alcatraz(http://alcatraz.io/)是管理Xcode所有插件的插件,它可以直接內建到Xcode的圖形界面中,讓你感覺就像在使用Xcode自帶的功能一樣。Alcatraz不但可以管理Xcode的插件,它另外還提供了管理Xcode工程模版以及顔色配置的功能。

使用如下的指令行來安裝Alcatraz:

<span class="line-number">1</span>
<span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
      
mkdir -p ~/Library/Application\ Support/\
Developer/Shared/Xcode/Plug-ins;
curl -L http://git.io/lOQWeA |\
 tar xvz -C ~/Library/Application\ Support/\
 Developer/Shared/Xcode/Plug-ins

           

安裝成功後重新開機Xcode,就可以在Xcode的頂部菜單中的”Window”–>“Package Manager”中找到Alcatraz。點選“Package Manager”,即可啟動插件清單頁面。你可以在右上角搜尋插件,對于想安裝的插件,點選其左邊的圖示,即可下載下傳安裝,如下所示,我正在安裝KImageNamed插件:

那些好用的iOS開發工具 那些好用的iOS開發工具

安裝完成後,再次點選插件左邊的圖示,可以将該插件删除。

以下所有介紹的插件均可用該方法來安裝或删掉,就不另行介紹了。

Alcatraz詳細的使用介紹,歡迎閱讀我的文章:《使用Alcatraz來管理Xcode插件》

KSImageNamed

KSImageNamed(https://github.com/ksuther/KSImageNamed-Xcode)是一個幫助你輸入[UIImage imageNamed:]中的資源名的插件。當你輸入

[UIImage imageNamed:]

時,會自動的彈出上下文菜單,供你選擇你需要輸入的圖檔資源名字,另外在選擇圖檔資源時,還可以在左側預覽該資源。如下圖所示:

那些好用的iOS開發工具 那些好用的iOS開發工具

XVim

XVim(https://github.com/JugglerShu/XVim)是一個Xcode的vim插件,可以在Xcode的編輯視窗中開啟vim模式。

vim模式最大的好處是可以全鍵盤操作,可以友善地移動光标以及複制、粘貼代碼。XVim對于Xcode的分欄模式也有很好的支援,與vim自帶的分欄模式一樣,可以用快捷鍵

ctrl + w

來切換目前編輯的分欄。

FuzzyAutocompletePlugin

FuzzyAutocompletePlugin (https://github.com/FuzzyAutocomplete/FuzzyAutocompletePlugin) 允許使用模糊的方式來進行代碼自動補全。

舉個例子,如果我們要重載 

viewDidAppear:

方法,那麼我們必須依次建入view、did、appear 才能得到相應的補全資訊,使用FuzzyAutocompletePlugin之後,我們可以建入vda (view、did、appear 三個單詞的首字母),或任意符合viewDidAppear整個單詞出現順序的子串(例如 vdapp, adear等),即可比對到該方法。

那些好用的iOS開發工具 那些好用的iOS開發工具

XToDo

XToDo(https://github.com/trawor/XToDo)是一個查找項目中所有的帶有 

TODO

FIXME

???

!!!

 标記的注釋。

通常我們在項目開發中,由于種種原因,一些事情需要以後處理,這個時候為了防止遺忘,加上

TODO

FIXME

注釋是非常有必要的,但是上線或送出代碼前要尋找這些未解決的事項卻稍顯麻煩。XToDo可以提供一個彙總的界面,集中顯示所有的未完成的

TODO

FIXME

标記。

BBUDebuggerTuckAway

BBUDebuggerTuckAway(https://github.com/neonichu/BBUDebuggerTuckAway)是一個非常小的工具,可以在你編輯代碼的時候自動隐藏底部的調試視窗。因為通常情況下,調試的時候是加斷點或監控變量變化,或者在Console視窗用

po

來輸出一些調試資訊。如果開始編輯代碼了,說明已經調試結束了,這個時候隐藏調試視窗,可以給編輯界面更多空間,友善我們修改代碼。

SCXcodeSwitchExpander

SCXcodeSwitchExpander(https://github.com/stefanceriu/SCXcodeSwitchExpander)幫助你迅速地在

switch

語句中填充枚舉類型的每種可能的取值。

例如,當你輸入

switch

,然後鍵入一個

NSTableViewAnimationOptions

類時,該插件會将其可能的取值補全在每一個

case

之後,如下圖所示:

那些好用的iOS開發工具 那些好用的iOS開發工具

deriveddata-exterminator

deriveddata-exterminator(https://github.com/kattrali/deriveddata-exterminator)是一個清除Xcode緩存目錄的插件。

有些時候Xcode會出各種奇怪的問題,最常見的是在某些複雜操作下(例如同一個項目,來回切換到各種分支版本),會造成Xcode顯示一些編譯的錯誤或警告,但是最終卻又可以編譯通過。新手遇到這種問題常常束手無策,而熟悉Xcode的人就知道,通常清除Xcode緩存就可以解決這類問題。該插件在Xcode菜單上增加了一個清除緩存按鈕,可以一鍵友善地清楚緩存内容。

VVDocumenter

VVDocumenter(https://github.com/onevcat/VVDocumenter-Xcode)是一個自動生成代碼注釋的工具,可以友善地将函數的參數名和傳回值提取出來,這樣結合上一節介紹的

appledoc

指令,就可以友善地将幫助文檔輸出。

那些好用的iOS開發工具 那些好用的iOS開發工具

ClangFormat

ClangFormat(https://github.com/travisjeffery/ClangFormat-Xcode)是一個自動調整代碼風格(Code Style)的工具。Xcode本身的代碼縮進自動調整功能比較弱,特别是對于JSON格式,常常産生非常醜陋的預設縮進效果。ClangFormat-Xcode可以更好地對代碼進行重新排版,并且内置了各種排版風格,也支援自定義風格。

ColorSense

ColorSense(https://github.com/omz/ColorSense-for-Xcode)是一個

UIColor

顔色輸入輔助工具,可以幫助你在編寫

UIColor

代碼時,實時預覽相應的顔色,如下圖所示:

那些好用的iOS開發工具 那些好用的iOS開發工具

XcodeBoost

XcodeBoost(https://github.com/fortinmike/XcodeBoost)包含多個輔助修改代碼的小功能,比如:

  • 可以在.m檔案中複制方法實作,然後将該方法的定義粘貼到對應的.h檔案中
  • 可以在某一個源檔案中直接輸入正規表達式查找
  • 可以複制粘貼代碼時不啟用Xcode的自動縮進功能(Xcode的自動縮進經常出問題,造成已經調整好的代碼縮進,因為粘貼時被Xcode調整壞了)

圖形應用工具

Charles

那些好用的iOS開發工具 那些好用的iOS開發工具

Charles(http://www.charlesproxy.com)是在Mac下常用的截取網絡封包的工具,在做iOS開發時,我們為了調試與伺服器端的網絡通訊協定,常常需要截取網絡封包來分析。Charles通過将自己設定成系統的網絡通路代理伺服器,使得所有的網絡通路請求都通過它來完成,進而實作了網絡封包的截取和分析。

Charles詳細的使用說明,歡迎閱讀我的文章:《iOS開發工具-網絡封包分析工具Charles》

界面調試

PonyDebugger(https://github.com/square/PonyDebugger)、Reveal(http://revealapp.com/)、Spark Inspector(http://sparkinspector.com/)是三個常用的界面調試工具,可以在程式運作時動态調試iOS應用界面。PonyDebugger是免費并且開源的,後兩者是收費的,不過功能更加強大。

對于動态或複雜的互動界面,手寫UI的是不可避免的,而Reveal一類的工具可以友善我們檢視控件的相應屬性是否正常,并且可以在程式運作時,動态地修改界面元素。這樣就不用反複地修改代碼并且重新開機程式了。

xScope

xScope(http://xscopeapp.com/)是一類與界面開發相關的工具集。對于iOS開發,比較好用的功能包括它的放大鏡取色工具、标尺工具等。其中放大鏡取色工具可以将取到的多個色集收集起來,友善後續使用,并且支援直接粘貼成相關的程式顔色代碼。

xScope是收費軟體,對于未付費版本,其功能有一些限制。

ImageOptim

ImageOptim(http://imageoptim.com/)是一個圖象壓縮的免費工具。iOS工程預設使用的是 pngcrush 指令來壓縮圖檔,不過其壓縮比率其實不高。對于應用中圖檔資源比較多的讀者,可以嘗試使用 ImageOptim 來達到最大的圖檔壓縮效果。

如果你從未嘗試過ImageOptim一類的圖檔壓縮工具,那麼第一次給IPA檔案瘦身的效果應該是比較驚人的。我個人的經驗是,初次使用時ImageOptim能減少至少10%的應用圖檔資源占用。

ImageOptim的實作原理是使用各種開源的圖像壓縮工具,然後取效果最好的那一個。它嘗試的工具包括:PNGOUT, Zopfli, Pngcrush, AdvPNG, extended OptiPNG, JpegOptim, jpegrescan, jpegtran 和 Gifsicle。

安裝方式是從其官方網站(http://imageoptim.com/)上下載下傳程式檔案,拖動到“應用程式”目錄即可。下圖是本篇文章所有的配圖,可以看到使用ImageOptim達到了29.5%的體積縮小。

那些好用的iOS開發工具 那些好用的iOS開發工具

馬克鳗

馬克鳗(http://www.getmarkman.com/)是國人開發的一款免費标注工具,可以友善地在美術輸出的設計稿上标注相應界面元素的大小,顔色,邊距,說明等。

指令行工具

CocoaPods

那些好用的iOS開發工具 那些好用的iOS開發工具

每種語言發展到一個階段,就會出現相應的依賴管理工具或者是中央代碼倉庫。比如Java的maven,Nodejs的npm等。而CocoaPods(http://cocoapods.org/)是為iOS程式提供依賴管理的工具。開發iOS項目不可避免地要使用第三方開源庫,CocoaPods的出現使得我們可以節省設定和更新第三方開源庫的時間。

在我開發猿題庫用戶端時,其使用了24個第三方開源庫。在沒有使用CocoaPods以前,我需要:

  1. 把這些第三方開源庫的源代碼檔案複制到項目中,或者設定成git的submodule。
  2. 對于這些開源庫通常需要依賴系統的一些framework,我需要手工地将這些framework一一增加到項目依賴中,比如通常情況下,一個網絡庫就需要增加以下framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics, zlib。
  3. 對于某些開源庫,我還需要設定

    -licucore

    或者 

    -fno-objc-arc

    等編譯參數
  4. 管理這些依賴包的更新。

這些體力活雖然簡單,但毫無技術含量并且浪費時間。在使用CocoaPods之後,我隻需要将用到的第三方開源庫放到一個名為Podfile的檔案中,然後執行

pod install

。CocoaPods就會自動将這些第三方開源庫的源碼下載下傳下來,并且為我的工程設定好相應的系統依賴和編譯參數。

使用CocoaPods還需要注意以下幾點:

  1. 需要使用CocoaPods生成的 .xcworkspace 檔案來打開工程,而不是以前的 .xcodeproj 檔案。
  2. 每次更改了Podfile檔案,你需要重新執行一次

    pod update

    指令。
  3. 當你執行

    pod install

    之後,除了Podfile外,CocoaPods還會生成一個名為

    Podfile.lock

    的檔案,你應該把這個檔案加入到版本管理中。因為Podfile.lock會鎖定目前各依賴庫的版本,之後如果多次執行

    pod install

     不會更改版本,要

    pod update

    才會改

    Podfile.lock

    了。這樣的好處是:當多人協作的時候,可以保證所有人的第三庫環境是完全一樣的。

詳細的使用說明,歡迎閱讀我的文章:《用CocoaPods做iOS程式的依賴管理》

nomad

nomad(http://nomad-cli.com/)是一個友善你操作蘋果開發者中心(Apple Developer Center)的指令行工具,可以做的事情包括友善地添加測試裝置,更新證書檔案,增加App id,驗證IAP的憑證等。

安裝方式:

安裝完後,首先執行

ios login

,你的Developer賬号密碼會被它存儲到Keychain中,之後就可以用指令行來完成各種背景操作了,例如:

添加測試裝置:

更新證書檔案:

nomad還有很多功能,建議大家閱讀其官方網站的文檔進一步學習。

xctool

xctool(https://github.com/facebook/xctool)是facebook開源的一個iOS編譯和測試的工具。使用它而不是用Xcode的UI界面是因為它是一個純指令行工具。比如:我們可以使用xctool在指令生下進行編譯和單元測試,然後将測試結果內建到Jenkins中,這樣就實作了自動化的持續內建。雖然蘋果也在OSX Server上推出了自己的自動化內建工具BOT,但其配置和使用上現在仍然不太友善。

安裝xctool可以使用brew指令:

使用xctool編譯項目可以使用如下指令:

1
2
3
4
      
path/to/xctool.sh \
  -project YourProject.xcodeproj \
  -scheme YourScheme \
  build
           

使用xctool執行單元測試,可以使用如下指令:

1
2
3
4
      
path/to/xctool.sh \
  -workspace YourWorkspace.xcworkspace \
  -scheme YourScheme \
  test
           

xctool還有很多功能,建議大家閱讀xctool官方網站的文檔進一步了解更多的功能。

appledoc

appledoc(https://github.com/tomaz/appledoc)是一個從源碼中抽取文檔的工具。

對于開發者來說,文檔最好和源碼在一起,這樣更新起來更加友善和順手。象Java一類的語言本身就自帶javadoc指令,可以從源碼中抽取文檔。而appledoc就是一個類似javadoc的指令行程式,可以從iOS工程的源代碼中抽取相應的注釋,生成幫助文檔。

相對于其它的文檔生成工具,appledoc的優點是:

  • 它預設生成的文檔風格和蘋果的官方文檔是一緻的。
  • appledoc就是用objective-c寫的,必要的時候調試和改動也比較友善。
  • 它可以生成docset,并且內建到xcode中。內建之後,在相應的API調用處,按住option再單擊就可以調出相關的幫助文檔。
  • 它沒有特殊的注釋要求,相容性高。

安裝appledoc可以直接使用brew指令:

使用時切換到iOS工程目錄下,執行以下操作即可,appledoc會掃描目前路徑下的所有檔案,然後生成好文檔放到doc目錄下。你也可以用appledoc —help檢視所有可用的參數。

1
2
3
      
appledoc -o <output_path> \
--project-name <project_name> \
--project-company <project_company> .
           

詳細的使用介紹,歡迎閱讀我的文章:《使用Objective-C的文檔生成工具:appledoc》

Xcode插件

Xcode是iOS的內建開發環境,雖然蘋果一直在不斷改進Xcode,但程式員總是有各種新奇的想法和需求,當Xcode無法滿足他們時,于是他們就會通過插件的方式來為Xcode增加新的功能。本節将會給大家介紹一些常用的Xcode增強插件。

Xcode所有的插件都安裝在目錄

~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/

下,每個插件為一個子目錄,你也可以手工切換到這個目錄來增加或删除插件。

Alcatraz

那些好用的iOS開發工具 那些好用的iOS開發工具

Alcatraz(http://alcatraz.io/)是管理Xcode所有插件的插件,它可以直接內建到Xcode的圖形界面中,讓你感覺就像在使用Xcode自帶的功能一樣。Alcatraz不但可以管理Xcode的插件,它另外還提供了管理Xcode工程模版以及顔色配置的功能。

使用如下的指令行來安裝Alcatraz:

1
2
3
4
5
      
mkdir -p ~/Library/Application\ Support/\
Developer/Shared/Xcode/Plug-ins;
curl -L http://git.io/lOQWeA |\
 tar xvz -C ~/Library/Application\ Support/\
 Developer/Shared/Xcode/Plug-ins

           

安裝成功後重新開機Xcode,就可以在Xcode的頂部菜單中的”Window”–>“Package Manager”中找到Alcatraz。點選“Package Manager”,即可啟動插件清單頁面。你可以在右上角搜尋插件,對于想安裝的插件,點選其左邊的圖示,即可下載下傳安裝,如下所示,我正在安裝KImageNamed插件:

那些好用的iOS開發工具 那些好用的iOS開發工具

安裝完成後,再次點選插件左邊的圖示,可以将該插件删除。

以下所有介紹的插件均可用該方法來安裝或删掉,就不另行介紹了。

Alcatraz詳細的使用介紹,歡迎閱讀我的文章:《使用Alcatraz來管理Xcode插件》

KSImageNamed

KSImageNamed(https://github.com/ksuther/KSImageNamed-Xcode)是一個幫助你輸入[UIImage imageNamed:]中的資源名的插件。當你輸入

[UIImage imageNamed:]

時,會自動的彈出上下文菜單,供你選擇你需要輸入的圖檔資源名字,另外在選擇圖檔資源時,還可以在左側預覽該資源。如下圖所示:

那些好用的iOS開發工具 那些好用的iOS開發工具

XVim

XVim(https://github.com/JugglerShu/XVim)是一個Xcode的vim插件,可以在Xcode的編輯視窗中開啟vim模式。

vim模式最大的好處是可以全鍵盤操作,可以友善地移動光标以及複制、粘貼代碼。XVim對于Xcode的分欄模式也有很好的支援,與vim自帶的分欄模式一樣,可以用快捷鍵

ctrl + w

來切換目前編輯的分欄。

FuzzyAutocompletePlugin

FuzzyAutocompletePlugin (https://github.com/FuzzyAutocomplete/FuzzyAutocompletePlugin) 允許使用模糊的方式來進行代碼自動補全。

舉個例子,如果我們要重載 

viewDidAppear:

方法,那麼我們必須依次建入view、did、appear 才能得到相應的補全資訊,使用FuzzyAutocompletePlugin之後,我們可以建入vda (view、did、appear 三個單詞的首字母),或任意符合viewDidAppear整個單詞出現順序的子串(例如 vdapp, adear等),即可比對到該方法。

那些好用的iOS開發工具 那些好用的iOS開發工具

XToDo

XToDo(https://github.com/trawor/XToDo)是一個查找項目中所有的帶有 

TODO

FIXME

???

!!!

 标記的注釋。

通常我們在項目開發中,由于種種原因,一些事情需要以後處理,這個時候為了防止遺忘,加上

TODO

FIXME

注釋是非常有必要的,但是上線或送出代碼前要尋找這些未解決的事項卻稍顯麻煩。XToDo可以提供一個彙總的界面,集中顯示所有的未完成的

TODO

FIXME

标記。

BBUDebuggerTuckAway

BBUDebuggerTuckAway(https://github.com/neonichu/BBUDebuggerTuckAway)是一個非常小的工具,可以在你編輯代碼的時候自動隐藏底部的調試視窗。因為通常情況下,調試的時候是加斷點或監控變量變化,或者在Console視窗用

po

來輸出一些調試資訊。如果開始編輯代碼了,說明已經調試結束了,這個時候隐藏調試視窗,可以給編輯界面更多空間,友善我們修改代碼。

SCXcodeSwitchExpander

SCXcodeSwitchExpander(https://github.com/stefanceriu/SCXcodeSwitchExpander)幫助你迅速地在

switch

語句中填充枚舉類型的每種可能的取值。

例如,當你輸入

switch

,然後鍵入一個

NSTableViewAnimationOptions

類時,該插件會将其可能的取值補全在每一個

case

之後,如下圖所示:

那些好用的iOS開發工具 那些好用的iOS開發工具

deriveddata-exterminator

deriveddata-exterminator(https://github.com/kattrali/deriveddata-exterminator)是一個清除Xcode緩存目錄的插件。

有些時候Xcode會出各種奇怪的問題,最常見的是在某些複雜操作下(例如同一個項目,來回切換到各種分支版本),會造成Xcode顯示一些編譯的錯誤或警告,但是最終卻又可以編譯通過。新手遇到這種問題常常束手無策,而熟悉Xcode的人就知道,通常清除Xcode緩存就可以解決這類問題。該插件在Xcode菜單上增加了一個清除緩存按鈕,可以一鍵友善地清楚緩存内容。

VVDocumenter

VVDocumenter(https://github.com/onevcat/VVDocumenter-Xcode)是一個自動生成代碼注釋的工具,可以友善地将函數的參數名和傳回值提取出來,這樣結合上一節介紹的

appledoc

指令,就可以友善地将幫助文檔輸出。

那些好用的iOS開發工具 那些好用的iOS開發工具

ClangFormat

ClangFormat(https://github.com/travisjeffery/ClangFormat-Xcode)是一個自動調整代碼風格(Code Style)的工具。Xcode本身的代碼縮進自動調整功能比較弱,特别是對于JSON格式,常常産生非常醜陋的預設縮進效果。ClangFormat-Xcode可以更好地對代碼進行重新排版,并且内置了各種排版風格,也支援自定義風格。

ColorSense

ColorSense(https://github.com/omz/ColorSense-for-Xcode)是一個

UIColor

顔色輸入輔助工具,可以幫助你在編寫

UIColor

代碼時,實時預覽相應的顔色,如下圖所示:

那些好用的iOS開發工具 那些好用的iOS開發工具

XcodeBoost

XcodeBoost(https://github.com/fortinmike/XcodeBoost)包含多個輔助修改代碼的小功能,比如:

  • 可以在.m檔案中複制方法實作,然後将該方法的定義粘貼到對應的.h檔案中
  • 可以在某一個源檔案中直接輸入正規表達式查找
  • 可以複制粘貼代碼時不啟用Xcode的自動縮進功能(Xcode的自動縮進經常出問題,造成已經調整好的代碼縮進,因為粘貼時被Xcode調整壞了)