iOS 高效開發之道
iOS_高效開發之道
話不多說, 總結一下個人感覺有利於提高iOS開發效率的幾個小技巧。
本文將從以下幾方面介紹:
- Xcode常用快捷鍵
- Xcode除錯技巧
- Objc常用程式碼片段
- Xcode外掛
- Mac工具
1. Xcode常用快捷鍵
導航快捷鍵
command+1-8:
開啟 Project/Symbol/Find/Issue/Test/Debug/Breakpoint/Log 導航欄
command+0:
顯示/隱藏 左側 tool panel
option+command+0:
顯示/隱藏 右側 tool panel
option+command+1:
顯示 右側 the file inspector
option+command+2:
顯示 右側 quick help inspector
Option+左鍵點選操作
一個快速開啟Assistant Editor的方式–只需要按住Option鍵並點選你想要在當前編輯框右邊開啟的檔案即可。
shift+command+J:
在專案導航中定位當前檔案(Reveal in Project Navigator)。
command+J:
焦點切換(Move Focus),可快速定位到編輯介面
shift+command+Y:
顯示/隱藏 控制檯
搜尋快捷鍵
Command+Shift+F
使用專案搜尋可以找到某個變數或方法名的被提到的次數。可以依據例項來匹配,並可忽略大小寫字母。另外還可以對查詢的變數名進行替換。
Command + Shift + O
可以直接跳轉到某個方法定義或者指定的程式碼檔案。
Control+6
(鍵入方法/變數名+Enter跳轉)
跳轉至當前程式碼檔案中的程式碼行。如果檔案中有上千行程式碼,你可以通過該快捷操作來縮小查詢範圍,從而在需要的地方插入程式碼以新增新的功能。
Control + Command + Up/Down Arrow
.h 和 .m檔案間的快速切換
Control + 1
該快捷鍵可開啟’Show Related Items‘彈出選單’。倘若你已經將游標放在了任何方法中,並點選‘CTRL + 1 ’就可以很方便地通過彈出的檢視訪問該方法的所有呼叫者和被呼叫者。
執行除錯快捷鍵
Command + R
執行應用程式
Command + B
構建應用程式
Command + .
停止執行(Stop)
Command + \
C前行設定/取消斷點;通過滑鼠點選藍色斷點來啟用/禁用當前行斷點。
Command + Y
全域性啟用或禁用所有的斷點,啟用進入除錯模式(此時斷點藍色可見)。
Command + Shift + K
清除工程(clean)
編輯快捷鍵
command+[/]
向前/向後縮排
command+/
註釋選中的程式碼
option+command+←/→
摺疊當前程式碼塊
option+shift+command+←/→
摺疊該檔案內所有程式碼塊(方法/函式)
option+command+[/]
Move Line Up/Down
Ctrl + F
前移游標
Ctrl + B
後移游標
Ctrl + P
移動游標到上一行
Ctrl + N
移動游標到下一行
Ctrl + A
移動游標到本行行首
Ctrl + E
移動游標到本行行尾
Ctrl + T
交換游標左右兩邊的字元
Ctrl + D
刪除游標右邊的字元
Ctrl + K
刪除本行
Ctrl + L
將插入點置於視窗正中
2. Xcode除錯技巧
新增異常斷點
有時候在程式出錯的時候不能能準確定位到奔潰的那一行程式碼,而是直接跑到main迴圈或者Appdelegate裡面, 或者會給你這樣的提示:
EXEC_BAD_ACCESS:
- 1
是不是有種想哭的衝動?然而你只需要這樣設定全域性斷點, 它就會自動定位到出錯的位置:
Enable NSZombie Objects(開啟殭屍物件)
Enable NSZombie Objects可能是整個Xcode開發環境中最有用的除錯技巧。這個技巧非常非常容易追蹤到重複釋放的問題。該技巧會以非常簡潔的方式列印指出重複釋放的類和該類的記憶體地址。
怎麼開啟殭屍物件呢?首先開啟’Edit Scheme’(或者通過熱鍵⌘<),然後選擇’Diagnostics’選項卡,勾選Enable NSZombie Objects選項。
unrecognized selector send to instancd 快速定位
在Debug選單中Breakpoints->Create Symbolic Breakpoint
在Symbolic中填寫如下方法簽名:
-[NSObject(NSObject) doesNotRecognizeSelector:]
- 1
設定完成後再遇到類似的錯誤就會定位到具體的程式碼。
條件斷點
顧名思義, 可以根據你指定的條件執行斷點。
這樣只有遍歷到 c==“H” 的時候 斷點才會被觸發。
至於其他的 ignore, Action 等, 可以自己嘗試下, 都是神器。
Xcode檢視除錯
執行app過程中,按下底部的Debug View Hierarchy 按鈕,或者從選單中選擇Debug > View Debugging > Capture View Hierarchy 來啟動檢視除錯。
啟動檢視除錯後,Xcode會對應用程式的檢視層次拍一個快照並展示三維原型檢視來探究使用者介面的層級。該三維檢視除了展示app的檢視層次外,還展示每個檢視的位置、順序和檢視尺寸,以及檢視間的互動方式。
在Xcode的除錯區有9個檢視除錯過程中要用到的按鈕和滑塊兒。
從左到右控制元件排序:
- 調整檢視間距:調整不同檢視間的間距。
- 展示被剪下的內容:當前展示檢視中被剪下的部分。
- 展示約束:展示選中檢視的約束。
- 重置檢視區域:將3D渲染透檢視恢復至預設狀態。
- 調整檢視模式:選擇性地展示3D渲染透檢視,比如僅展示內容,僅展示框架以及同時展示內容和框架。
- 縮小:縮小3D渲染透檢視
- 恢復:將3D渲染透檢視恢復至預設尺寸。
- 放大:放大3D渲染透檢視
- 調整可視檢視範圍:隱藏檢視或展示檢視,一步步解析3D渲染檢視,向左或者向右滑動滑塊兒有相反的效果。
iOS模擬器除錯功能
編譯並執行應用程式,選中模擬器,從 Debug選單中選擇Color Blended Layers選項。
除了標記圖層外,還有其他一些有用的功能可幫開發者在iOS模擬器中除錯應用。以下是其中一些比較有用的:
- Toggle Slow Animations in Frontmost App: 選中模擬器,開啟Debug選單選中Toggle Slow Animations in Frontmost App,該功能可以降低app中動畫的執行速度,適合除錯包含複雜動畫的應用程式。也可是使用快捷鍵Command-T來操作。
- Color Copied Images:該選項可以給繪製時被Core Animation複製的圖片新增藍綠色疊加層。
- Color Misaligned Images:如果圖片邊界沒有與目標畫素完美對齊,該功能可為圖片疊加上一層品紅色。如果圖片使用確定的比例大小繪製,那麼該功能會為圖片新增一層黃色疊加。
- Color Off Screen Rendered:.該選項為離屏渲染內容新增一個黃色的疊加層。 很多開發者會忽略接入電話時應用狀態列的設計問題,你可以通過觸發通話中狀態列來簡單測試。在iOS模擬器中,從Hardware選單中選中Toggle In-Call Status Bar。
Quick Look Debugging
自從版本 5 開始,Xcode 在偵錯程式已經附帶了快速檢視顯示。正如你可以在桌面上快速點選空格鍵來檢視檔案的內容,在 Xcode 中你可以用視覺化的快速檢視各種資料型別。
在我們的 color 變數上按空格鍵立即給出了一個答案,你腦海中應該馬上浮現起了需要 RGB 轉化計算:
同時,你還可以直接從程式碼的除錯中呼叫快速檢視。比如下面的方法,buildPathWithRadius(_:steps:loopCount:)
。它創造了某種形式的 UIBezierPath
,但你已經忘了,而這段程式碼到底是否工作
- (UIBezierPath *)buildPathWithRadius:(CGFloat)radius steps:(CGFloat)steps loopCount:(CGFloat)loopCount { CGFloat x, y; CGFloat away = radius / steps; CGFloat around = loopCount / steps * 2 * M_PI; UIBezierPath *path = [UIBezierPath bezierPath]; [path moveToPoint:CGPointZero]; for (int i = 1; i <= steps; i++) { x = cos(i * around) * i * away; y = sin(i * around) * i * away; [path addLineToPoint:CGPointMake(x, y)]; } return path;}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
為了看到結果,你肯定可以為這個 bezier 路徑新建一個自定義檢視或畫成一個 UIImage。但更好的是,你可以在方法結尾插入一個斷點並把滑鼠移上去檢視 path:
快速檢視支援大多數你想要視覺化的資料型別。Xcode 已經為你覆蓋了以下幾種型別:
型別 | 說明 |
---|---|
圖片 | UIImage,NSImage,UIImageView,NSImageView,CIImage,和 NSBitmapImageRep 都可以快速檢視。 |
顏色 | UIColor 和 CGColor。 |
字串 | NSString 和 NSAttributedString。 |
幾何 | UIBezierPath 和 NSBezierPath,以及 CGPoint,CGRect,和 CGSize。 |
地區 | CLLocation 將顯示一個很大的,互動的對映位置,並顯示高度和精度的細節。 |
URLs | NSURL 將顯示 URL 所指的本地或遠端的內容。 |
SpriteKit | SKSpriteNode,SKShapeNode,SKTexture,和 SKTextureAtlas 都會被顯示。 |
資料 | NSData 將漂亮的顯示出偏移的十六進位制和 ASCII 值。 |
檢視 | 最後但並非最不重要的,任何 UIView 子類都將在快速檢視彈出框中顯示其內容,方便極了。 |
3. Objc常用程式碼片段
很多 Objective-C 程式碼其實都沒必要去手寫,不管是 @interface 宣告還是 if (!self) return nil; 之類的咒語。Xcode 程式碼塊可以把這些重複的模式和樣板提取出來進行復用。
使用 Xcode 程式碼塊
開啟編輯器右側的工具面板,就能看到所有可用的程式碼塊。在工具面板的下方,有 4 個水平分佈的小圖示。 點選 { }
圖示可以檢視程式碼塊倉庫。
有兩種方法將一個程式碼塊插入你的程式碼:
你可以從程式碼塊倉庫拖到你的編輯器裡面:
亦或那些有快捷輸入碼的程式碼塊,你可以這樣:
建立 Xcode 程式碼塊
建立程式碼塊的過程不是非常直觀很難用文字去描述。它使用了 OS X 系統中一個比較隱晦的功能,讓使用者拖拽選中文字生成“剪下文字”。看下實際操作就很好理解:
使用者將自定義的程式碼塊新增到庫裡面後,可以雙擊列表中的塊去編輯。
每個塊都有以下內容:
- Title 標題 - 塊的名字(出現在程式碼補全和程式碼塊庫列表中)
- Summary 簡介 - 簡單描述下它是幹嘛的(只出現在程式碼塊庫列表中)
- Platform 平臺 - 限制可訪問該程式碼塊的平臺。OS X,iOS,或者(“全部”)
- Language 語言 - 限制可訪問該程式碼塊的語言。常見的有 C,Objective-C,C++,或 Objective-C++
- Completion Shortcut 輸入碼 - 快捷輸入碼。常用塊的輸入碼應該非常簡練。Xcode 不會警告衝突 / 重複的輸入碼,所以一定要確保新新增的不要和已有的衝突。
- Completion Scopes 有效範圍 - 限制可訪問該程式碼塊的範圍。if / else 語句的自動補全應該只在方法或者函式的實現中有效。下面這些選項可以任意組合:
- All 全部
- Class Implementation 類實現
- Class Interface Methods 類介面方法
- Class Interface Variables 類介面變數
- Code Expression 程式碼表達式
- Function or Method 函式或方法
- Preprocessor Directive 預處理指令
- String or Comment 字串或註釋
- Top Level 最高層
~/Library/Developer/Xcode/UserData/CodeSnippets/目錄存放了所有 Xcode 程式碼段的檔案表示
佔位符
在你使用其他程式碼塊時你可能已經注意到了這些佔位符:
在 Xcode 中,佔位符使用 <# 和 #>
來分隔,中間是佔位文字。 趕緊使用佔位符給你的程式碼塊新增一點動態效果吧!
第三方 Xcode 程式碼塊
你可以在 這個 GitHub 專案 找到一些好用的程式碼塊。
4. Xcode外掛
Xcode外掛可以大大提高開發效率。
外掛安裝方式
- 推薦! 使用Alcatraz安裝,commannd + sift + 9 調出圖形介面,然後使用搜索外掛安裝
- 手動安裝:對應有些好的外掛,Alcatraz找不到的話,可以手動下載外掛包,然後安裝。 安裝方法:下載附件,解壓後放在:你的使用者/Library/Application Support/Developer/Shared/Xcode/Plug-ins目錄
Alcatraz安裝
推薦外掛
- KSImageNamed
- Xcode資原始檔在程式碼中新增只能感應,例如: [UIImage imageNamed: 會出現專案中的資原始檔的智慧感應
OMColorSense
- Xcode 程式碼中可以通過選擇顏色生成uicolor程式碼
- 使用:先隨便寫個顏色,然後點選顏色行,改行的右上角會出現色快,點選可以選擇顏色。或點選Xcode導航中的Edit-》insert color
VVDocumenter-Xcode
- Xcode 按三次斜槓(///)後自動生成方法的註釋
- fuzzyAutocomplete ,hou或是AutoresizeMask-for-Xcode
- 加強版只能感應,只是模糊匹配,必裝!
- SCXcodeMiniMap
- 類似Sublime Text 右側的迷你預覽圖
- XToDo
- 代辦列表管理
- 支援//TODO: //FIXME: //!!!: //???: 快捷鍵分別是 : control + shift + T ,control + shift + X ,control + shift + ! ,control + shift + Q
- 開啟list 快捷鍵control + T
- XAlign
- 說明:自動對齊程式碼
- 快捷鍵:command+shift+X
- Code Pilot
- Xcode查詢檔案外掛
- 快捷鍵:command+shift+X,建議替換為control+X
- CocoaPods
- CocoaPods外掛
- Peckham
- 自動import標頭檔案
- Dash for Xcode
- Xcode文件外掛
5. Mac工具
如果你去到一位熟練的木匠的工作室,你總是能發現他/她有一堆工具來完成不同的任務。
軟體開發同樣如此。你可以從軟體開發者如何使用工具中看出他水準如何。有經驗的開發者精於使用工具。對你目前所使用的工具不斷研究,同時瞭解一些替代品的使用,當你目前所用的工具無法滿足你的需要時可以填補空缺。
靈感
- pttrns - 一個很棒的按任務分類的iOS螢幕設計相簿。舉例來說,如果你想看其他應用如何處理活動feed,在這兒你可以找到一堆的例子。
- TappGala - 另一個很棒的優美應用設計的集合站。它不是按任務來分類的,只是一個優秀應用的列表,你可以在此獲取靈感。
- Cocoa Controls - 一些很棒的你可以用在你的iOS應用中的元件(程式碼)的列表。有時你可以找到一段優秀程式碼來節省時間,有時你也可以學習其他開發者是如何完成某個功能的。訂閱他們的每週一報吧,都是精華,極少糟粕。
- IICNS - 真正優秀圖示的集合。獲取靈感吧,但不要抄襲。
- Dribbble - 最優秀的設計師們在上面展示他們的作品。真正的精品。
- Capptivate - 給人靈感的設計作品相簿。有些帶有動畫。感謝你,@joaopmaia!
設計
- Mocks ($) – 一個簡單應用的快速建立iOS應用原型的工具。自帶一些預設控制元件,你可以快速搭建原型。
- Briefs ($) – 一個很有用的應用,可以讓你建立應用原型,將原型連起來形成互動。你可以部署到真實裝置上,看看在你手上是什麼樣的感覺。
- Acorn ($) – Photoshop的有力競爭者,比ps便宜多了。我發現自己最近用Photoshop越來越少了。該專案在積極的開發維護中。
- Sketch ($) - 一個基於向量的畫圖工具,隨著螢幕尺寸和畫素密度的改變,這個工具越來越有用。只需要設計一次,然後可以根據需要進行縮放。同時還帶有一個很強大的匯出系統。對於Sketch示例專案,請看Sketchmine。我的 screencast on Sketch上有視訊演示。
- iOS 7 PSD by Teehan+Lax - 如果你(或者你的設計師)用Photoshop的話,這是個超有用的資源。也有 iOS 6版本的。
- Bjango’s Photoshop Actions - 如果你用Photoshop來設計iOS應用的話絕對能幫你省時間。一次點選即可重設畫布大小,縮放200%(或50%),設定全域性亮度為90等等。他們的 部落格中也有許多Photoshop的工作技巧。
- xScope ($) – 一把不可或缺的瑞士軍刀,指導,畫素放大鏡,螢幕度量等等。想知道某個畫素點的顏色值?想知道某個Mac應用的一個按鈕和視窗之間有多少畫素?xScope都能幫你。可以看下他們為映象設計所開發的iPhone應用,看映象設計在你的蘋果裝置上是多麼的畫素完美。
- Glyphish ($) – 一個很讚的有很多你的iOS應用可以使用的高質量圖示的集合。蘋果提供的內建圖示並不多,所有擁有這麼一個囊括各種概念的圖示集合很有用。我還在尋找關於嬰兒的一些圖示。Glyphish是以包的形式釋出的,最新的包裡有iOS7的“細線條”圖示,當設計iOS7應用的時候很有用。
- Fontastic Icons for iOS - 一個使用圖示字型的開源類集合,例如iOS應用中的Font Awesome。可以在任何畫素維度上快速簡便的得到一個圖示。由於字型在本質上可以輕鬆縮放,用這種辦法可以很方便的在不同平臺使用的圖示,而無需根據不同尺寸匯出不同的版本。
- PaintCode ($) -一個基於向量的畫圖工具,可以將你的作品匯出為Core Graphics原始碼。用來學習Core Graphics繪圖是非常棒的,同時如果你想要動態繪圖也是非常方便。我的screencast on PaintCode上有視屏演示。
- Edge Insets ($) – 一個幫助你定義可重用圖片邊距的簡單工具。在Mac App Store上有售。
- LiveView - 一個iOS上的遠端螢幕檢視器,在你的裝置上可以立馬輕鬆地看到你的設計圖。謝謝你,@_funkyboy!
- Skala Preview ($) – 另一個很棒的可以在真實裝置上快速看到你的設計圖的工具。Bjango的朋友們很給力,這個應用物有所值。謝謝你,jn40!
原始碼控制
- Git - 如果你沒有使用原始碼控制的話,停下手中的活立馬做出改變吧。我使用git做任何事情,我超愛它的。
- Kaleidoscope ($) – 最棒的diff/merge工具。三路合併,看著很漂亮。我每天都用。
- p4merge - 一個免費的、簡陋的Kaleidoscope的替代品。強大的三路合併功能,但找下載連結不容易啊。我每次要找的時候都覺得在他們網站上藏的很深啊。
- Git X - 一個簡單強大的GUI工具,可以看到git的時間線,輕鬆簡便地實現暫存區提交。我通常在終端上使用git,但當我需要將暫存區的改變做一次提交的時候就會想到這個應用。這是原來(已經廢棄)的GitX的一個衍生品,我在這個衍生品列表上找到的。
- Source Tree - 一個免費功能很全的Git應用。我沒用過是因為我喜歡命令列的方式,但如果你喜歡用GUI工具的話,可以看看這個。
剖析應用
- pngcrush - 這個實用工具可以壓縮解壓縮PNG檔案,當你想那些App Store上應用裡的圖片時很有用。只要開啟iTunes,檢視本地應用列表,對圖示右鍵在Finder中開啟。然後開啟應用,你可以看到一堆PNG檔案,但你沒法檢視它們。使用了pngcrush你可以將它們全部提取出來,然後用預覽來檢視。
- appcrush.rb - 這個很方便的ruby指令碼可以針對所有圖片將以上過程自動化。只需將它指向你磁碟上的一個.app檔案,它就會將所有圖片提取到你桌面上的一個資料夾裡。很方便地可以知道你手機上的應用如何完成某些設計的。我的my screencast on dissecting apps上有視訊演示。
- Charles ($, 免費功能受限的試用版) – 我不知道它的介面或者圖示為何如此醜陋,但是Charles是對於任何開發者來說都非常重要的一個工具。Charles作為一個代理,允許你監視進出你iPhone模擬器的網路流量。你同樣可以通過將手機的代理設定為你Mac上正在執行的Charles來監控你裝置上的流量。字簽名的SSL證書,請求&響應斷點,請求/響應檢視器,Charles真心是大讚。一個必須擁有的工具。再次,我的dissecting apps上視訊演示。
編輯器
我知道你在想什麼,難道不是所有iOS開發者都用Xcode嗎?答案是大多數都使用。但從我和Xcode的恩恩怨怨來看,我相信很有必要來考慮下有哪些替代品。
- AppCode - Jetbrains(ReSharper for .NET的製作公司)的一款功能全面的IDE。強大的重構工具和功能可以幫助你更快地寫程式碼。快速識別死程式碼,當你使用了相關程式碼時自動插入#import語句,輕鬆選取變數、方法以及類。我唯一希望的是它能成為Xcode的一個外掛。
- Vim - 等一下, vim?真的麼?確實是真的,有人在vim裡做所有的Objective-C開發。我並不是其中之一,但我喜歡用vim開發ruby。就因為如此,我很喜歡…
- Xvim - 一個Xcode外掛,能使用vim中的keybindings。感覺不錯,‘nuff說。
- OMColorSense -_ _另一個Xcode外掛,當你的游標停留在某個程式碼行如:[UIColor redColor]上的時候,它會在一小塊區域裡展示出程式碼中的顏色。點選顏色選項卡會開啟顏色選擇器,你在上面做的任何改變都會在程式碼裡得到反映,相應程式碼改為[UIColor colorWithRed:… green… blue… alpha:… ]。當我開著這個功能寫程式碼,別人看到的時候總是問我:“哇哦!這是啥玩意!”
- KSImageNamed - 另一個Xcode外掛,可以在你打下[UIImage imageNamed:…]的時候,自動補全bundle中圖片的檔名。有了它,就可以避免那些不小心打錯圖片名導致方法返回nil,然後你花10分鐘去檢查為什麼圖片沒有展示出來的問題了。
- CocoaPods Xcode Plugin - 這個外掛增加了一個選單項可以和CocoaPods互動。如果你不想用命令列的話很有用。
- Alcatraz Package Manager - 一個很棒的元外掛,可以讓你通過輕點滑鼠輕鬆安裝其他的Xcode配色方案和外掛。
- Code Runner ($) – 一個輕量級的程式碼感知文字編輯器,知道怎麼編譯和執行多種語言的程式碼。想快速測試一段Objective-C程式碼,又不想建立一整個Xcode專案?試試Code Runner吧。
文件
啊哈,文件,每個人最愛的話題。文件很重要,因此請注意一下,我們可以讓你生活變得簡單一些。
- appledoc - 想自動生成蘋果官方那樣的文件嗎?不用再找了。自動在你的專案中定義超連結符號,使用特殊格式的程式碼註釋來提取內容。生成正式文件和HTML網頁。
- Dash ($) – 一個必須擁有的API文件檢視器和程式碼片段管理器。它很好用,允許你下載並搜尋各種語言和框架的API文件,而且速度很快。最快訪問文件的方式。為了使搜尋更快,我把Dash和Alfred整合起來使用。
依賴管理
是的,這裡只列舉了一個工具。我不想引入真正的第三方庫列表,因為它們屬於完全不同的另一個列表。當我們談到依賴管理的時候,最最重要的就是:
- CocoaPods - 管理Objective-C專案的重要工具。允許你輕鬆快速地將第三方庫整合到你的應用中。它是通過建立另一個靜態庫工程,然後自動連結到你的工程來實現的。有成千上萬個可用的pod,可以輕鬆地為你的專案增加那些不屬於你(或者私有)的第三方庫支援。我在我的每個專案裡都用了CocoaPods。
診斷除錯
有時候我們正在開發應用,我們想更好的瞭解到底發生了什麼,修bug或者改善效能。
- Cocoa Lumberjack - 一個更強大的NSLog,Cocoa Lumberjack提供了高階日誌行為,比如記錄日誌到檔案、網路,根據日誌級別來篩選(info,debug,warn,error)。在NSScreencast Episode 61中有提到。
- DCIntrospect - 當你在模擬器上除錯的時候連結到你應用中的超強大的工具。一旦你這麼做了,你可以按下空格鍵來取得一些很有用的檢視除錯支援。檢視螢幕上檢視元素的精確維度,列印檢視層次,甚至水平或垂直移動檢視。
- Pony Debugger - 另一個你可以嵌入一個庫到你除錯版本中的工具,Pony Debugger實際上使用了Chrome的開發工具來檢視裝置上發出的網路請求,還有一個基本的Core Data瀏覽器。很難描述,請看我的screencast on Pony Debugger吧。
- Runscope ($) – Runscope是一個網路服務,可以捕捉請求,記錄日誌,給你關於你的API的有用資料。因為它是個HTTP通道API, 搭建簡單,你只需要更換你的主機名就行了。
- SimPholders - 快速簡單的訪問你的模擬器資料夾。根據iOS版本來瀏覽,然後是應用名,可以直接在Finder中開啟資料夾。
- Spark Inspector - 在除錯模式執行你的應用時,可以用3D來展示除錯你的檢視層次。這個應用你真的要看到了才會真正明白它的價值。它能幫助你瞭解你的應用是由哪些檢視組成的。它還帶有一個通知中心監視器,你可以輕鬆看到發出了哪些NSNotification,誰在觀察它們。另一個監控NSNotification的應用是Reveal。
影象
- ImageAlpha - 一個Mac應用,可以讓你將24位帶透明度的PNG圖轉成8位的帶alpha通道的PNG圖。通常8位PNG圖不帶有alpha通道,因此如果你的圖片可以用8位來表示(比如一個單色的按鈕)的話,你可以通過把25位PNG轉成8位的來節省很多空間。
- ImageOptim - 另一個Mac應用,可以壓縮PNG圖片來節省空間。大多數PNG檔案可以省掉幾個百分點的大小,有時甚至30%或更多。圖片更小意味著應用尺寸更小,執行時載入它們所使用的記憶體也更小。
- Prepo - 一個Mac上的小應用,可以將圖片快速變換為你需要的多個尺寸。只需要拖動一個大圖示檔案(比如,1024*1024)到Prepo,它就會生成512*512的iTunesArtwork,114*114的 [email protected],以及其他的尺寸和檔名。
- Slender ($) -一個很棒的應用,可以分析你的應用,找出各種問題,比如缺少視網膜屏的圖片,沒用到的圖片,能壓縮的圖片。使用Slender去除掉那些沒用的圖片,可以為你的iPhone應用節省好多空間。
後臺服務
最終你的iOS應用很可能會和伺服器通訊分享資料、獲取新內容、傳送推送通知等等。雖然你都可以手動去做,但你或許想要更方便的解決方案。
- Helios - Helios是一個開源的框架,為iOS應用提供了基礎的後臺服務,從資料同步、推送通知到應用內購買以及passbook整合。它建立在許多開源ruby gem的基礎上,因此如果你想要的話可以挑選構建你自己的棧。看一下Nomad CLI,有很多好用的相關工具。
- Windows Azure Mobile Services - 你可以把它想象成在雲端的一個可程式設計資料庫。建表,用JavasScript來讀取、插入、刪除,增加額外的功能。實現推送通知相當簡單。
- Urban Airship - 我現在在用Urban Airship來實現推送通知。很容易整合,使用者量不大的話是免費的。
- Parse - 這是另一個雲端資料服務,但是它提供了很多API以及有一個線上資料瀏覽器。我們一個很小的應用用了Parse,感覺不錯。
分析
這裡還有些別的選擇,但沒有一個讓我覺得有衝動把flurry換掉的。我樂於聽取意見,歡迎在評論裡告訴我吧。
- Flurry - 我用flurry很長時間了,它可以提供使用者使用我的應用的有用的分析資料。想知道什麼時候可以停止支援iOS5麼?Flurry會給你資料供你們討論。
部署
- Deploymate ($) – 還需要支援iOS4,但是你在用iOS6 SDK編譯?當你使用了一些在你的部署目標上不存在的符號時,Deploymate會警告你的。
- Cupertino - Nomad CLI工具之一,Cupertino為你提供了命令列介面來管理蘋果Provisioning Portal上的裝置及profile。舉例來說,只要鍵入ios devices:list就可以看到你帳號裡的當前裝置列表。可以用來自動化許多過程。
- Hockey App ($) – 管理你ad-hoc版本釋出的不錯服務。測試人員可以得到一個連結,無線安裝新的測試版本。它還提供了健壯的崩潰報告功能,你可以輕鬆應對你應用中的崩潰。
- TestFlight - 一個類似於Hockey App的免費應用。我們使用TestFlight已經取得了很大成功,輕鬆釋出應用,從使用者那收集反饋。我唯一希望他們能對這個服務進行收費。它還包括了分析和崩潰報告功能,但我們沒有用到那些功能。
- iOS Simulator Cropper - 一個拍模擬器螢幕快照的簡單方法,可以選擇帶或者不帶狀態列,帶或者不帶機器外殼等等。對於App Store或者普通市場上的一些截圖很有用。
- Status Magic ($) – 拍出更好的app store截圖圖。沒有什麼比App Store上帶有低電量或者低訊號標識的截圖圖更讓你的應用看起來糟糕的了。Status Magic讓你充分定製你的狀態列,包括去除一些元素,把時間改成蘋果喜歡的“9:41 AM”那樣,等等。
- Crashlytics -對於你正在開發中的應用來說是個很棒的崩潰報告工具。在釋出版裡自動上傳dSYM檔案,因此你的崩潰日誌會為你自動符號化並組織好,你可以專注於最關鍵的部分。
測試
我認為我們作為一個社群對測試關注得還不夠。有很多不錯的工具可用,大多數都很好用,我們沒有藉口不為我們的應用寫一些測試。
- Kiwi - 一個不錯的Rspec風格的iOS測試框架。基於SenTestingKit建立,因此你只需按下⌘U來執行你的用例。它同樣帶有健壯的mocking以及stubbing庫和斷言。
- Specta -一個類似於Kiwi的輕量級BDD框架,但是它的expectation語法有一個比Kiwi好的地方:每個變數都隱式裝箱:expect(items.count).to.equal(5)。不需要像Kiwi那樣將5包裝成NSNumber。和Expecta搭配使用效果更好。
以下的幾個都可以用來執行端到端的驗收測試。這些測試會和你的介面互動,點選按鈕,滾動,等等。雖然上它們執行會比較慢,但是在大範圍內測試會更容易看到所有的模組整合的是否良好。
應用分析
你當然想要知道你的應用能賺多少錢,不是麼?有一些解決方案,這兒有些還不錯的:
- App Viz 2 ($) – 一個很有用的Mac應用,可以跟蹤你應用的銷量。你在本地執行它,它會登入並下載你的銷售報告。
- App Annie - 一個線上的銷售報告工具。我不太樂意把我的認證資訊交給除了iTunes以外的第三方,但它確實能確保你的報告是最新的,你無需在本地執行一個程式。在評論中,Josh Brown建議可以建立另一個使用者用於iTunes Connect中的分析,這個主意不錯。