話很少說, 總結一下我的感受有利於提升iOS開發效率的幾個小技巧。html
本文將從下面幾方面介紹:ios
command+1-8:
git
打開 Project/Symbol/Find/Issue/Test/Debug/Breakpoint/Log 導航欄github
command+0:
數據庫
顯示/隱藏 左側 tool panel編程
option+command+0:
vim
顯示/隱藏 右側 tool panelwindows
option+command+1:
xcode
顯示 右側 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
清除project(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
將插入點置於窗體正中
有時候在程序出錯的時候不能能準肯定位到奔潰的那一行代碼,而是直接跑到main循環或者Appdelegate裏面, 或者會給你這種提示:
EXEC_BAD_ACCESS:
是否是有種想哭的衝動?然而你僅僅需要這樣設置全局斷點, 它就會本身主動定位到出錯的位置:
Enable NSZombie Objects多是整個Xcode開發環境中最實用的調試技巧。這個技巧很是很是easy追蹤到反覆釋放的問題。該技巧會以很是簡潔的方式打印指出反覆釋放的類和該類的內存地址。
怎麼開啓殭屍對象呢?首先打開’Edit Scheme’(或者經過熱鍵⌘<),而後選擇’Diagnostics’選項卡,勾選Enable NSZombie Objects選項。
在Debug菜單中Breakpoints->Create Symbolic Breakpoint
在Symbolic中填寫例如如下方法簽名:
-[NSObject(NSObject) doesNotRecognizeSelector:]
設置完畢後再遇到類似的錯誤就會定位到詳細的代碼。
顧名思義, 可以依據你指定的條件執行斷點。
這樣僅僅有遍歷到 c==「H」 的時候 斷點纔會被觸發。
至於其它的 ignore, Action 等, 可以本身嘗試下, 都是神器。
執行app過程當中,按下底部的Debug View Hierarchy button,或者從菜單中選擇Debug > View Debugging > Capture View Hierarchy 來啓動視圖調試。
啓動視圖調試後,Xcode會相應用程序的視圖層次拍一個快照並展現三維原型視圖來探究用戶界面的層級。該三維視圖除了展現app的視圖層次外,還展現每個視圖的位置、順序和視圖尺寸。以及視圖間的交互方式。
在Xcode的調試區有9個視圖調試過程當中要用到的button和滑塊兒。
從左到右控件排序:
編譯並執行應用程序,選中模擬器,從 Debug菜單中選擇Color Blended Layers選項。
除了標記圖層外,還有其它一些實用的功能可幫開發人員在iOS模擬器中調試應用。下面是當中一些比較實用的:
也但是使用快捷鍵Command-T來操做。
在iOS模擬器中,從Hardware菜單中選中Toggle In-Call Status Bar。
自從版本號 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;
}
爲了看到結果,你確定可以爲這個 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 子類都將在高速查看彈出框中顯示其內容,方便極了。 |
很是多 Objective-C 代碼事實上都不是必需去手寫。不管是 @interface 聲明仍是 if (!self) return nil; 之類的咒語。Xcode 代碼塊可以把這些反覆的模式和樣板提取出來進行復用。
打開編輯器右側的工具面板。就能看到所有可用的代碼塊。在工具面板的下方,有 4 個水平分佈的小圖標。
點擊 { }
圖標可以查看代碼塊倉庫。
有兩種方法將一個代碼塊插入你的代碼:
你可以從代碼塊倉庫拖到你的編輯器裏面:
亦或那些有快捷輸入碼的代碼塊,你可以這樣:
建立代碼塊的過程不是很是直觀很是難用文字去描寫敘述。
它使用了 OS X 系統中一個比較隱晦的功能。讓用戶拖拽選中文本生成「剪切文本」。
看下實際操做就很是好理解:
用戶將本身定義的代碼塊加入到庫裏面後,可以雙擊列表中的塊去編輯。
每個塊都有下面內容:
Xcode 不會警告衝突 / 反覆的輸入碼,因此必定要確保新加入的不要和已有的衝突。
~/Library/Developer/Xcode/UserData/CodeSnippets/目錄存放了所有 Xcode 代碼段的文件表示
在你使用其它代碼塊時你可能已經注意到了這些佔位符:
在 Xcode 中,佔位符使用 <# 和 #>
來分隔。中間是佔位文本。
趕忙使用佔位符給你的代碼塊加入一點動態效果吧!
你可以在 這個 GitHub 項目 找到一些好用的代碼塊。
Xcode插件可以大大提升開發效率。
OMColorSense
VVDocumenter-Xcode
假設Xcode插件不能知足本身的需求,怎麼辦?
假設你去到一位熟練的木匠的工做室。你老是能發現他/她有一堆工具來完畢不一樣的任務。
軟件開發相同如此。你可以從軟件開發人員怎樣使用工具中看出他水準怎樣。有經驗的開發人員精於使用工具。對你眼下所使用的工具不斷研究,同一時候瞭解一些替代品的使用,當你眼下所用的工具沒法知足你的需要時可以填補空缺。
獲取靈感吧。但不要抄襲。
有些帶有動畫。
感謝你,@joaopmaia!
你可以部署到真實設備上,看看在你手上是什麼樣的感受。
僅僅需要設計一次。而後可以依據需要進行縮放。
同一時候還帶有一個很是強大的導出系統。
對於Sketch演示樣例項目。請看Sketchmine。個人 screencast on Sketch上有視頻演示。
也有 iOS 6版本號的。
蘋果提供的內置圖標並很少,所有擁有這麼一個囊括各類概念的圖標集合很是實用。我還在尋找關於嬰兒的一些圖標。Glyphish是以包的形式公佈的,最新的包裏有iOS7的「細線條」圖標,當設計iOS7應用的時候很是實用。
可以在不論什麼像素維度上高速簡便的獲得一個圖標。
因爲字體在本質上可以輕鬆縮放。用這種辦法可以很是方便的在不一樣平臺使用的圖標,而無需依據不一樣尺寸導出不一樣的版本號。
個人screencast on PaintCode上有視屏演示。
強大的三路合併功能,但找下載連接不easy啊。我每次要找的時候都認爲在他們站點上藏的很是深啊。
這是原來(已經廢棄)的GitX的一個衍生品,我在這個衍生品列表上找到的。
僅僅要打開iTunes,查看本地應用列表,對圖標右鍵在Finder中打開。而後打開應用,你可以看到一堆PNG文件,但你無法查看它們。使用了pngcrush你可以將它們所有提取出來,而後用預覽來查看。
你相同可以經過將手機的代理設置爲你Mac上正在執行的Charles來監控你設備上的流量。
字簽名的SSL證書。請求&響應斷點,請求/響應查看器,Charles真心是大讚。一個必須擁有的工具。
再次,個人dissecting apps上視頻演示。
我知道你在想什麼。難道不是所有iOS開發人員都用Xcode嗎?答案是大多數都使用。但從我和Xcode的恩恩怨怨來看。我相信很是有必要來考慮下有哪些替代品。
強大的重構工具和功能可以幫助你更快地寫代碼。高速識別死代碼,當你使用了相關代碼時本身主動插入#import語句,輕鬆選取變量、方法以及類。我惟一但願的是它能成爲Xcode的一個插件。
感受不錯。‘nuff說。
當我開着這個功能寫代碼。別人看到的時候老是問我:「哇哦!
這是啥玩意!」
假設你不想用命令行的話很是實用。
啊哈,文檔,每個人最愛的話題。文檔很是重要,所以請注意一下。咱們可以讓你生活變得簡單一些。
它很是好用。贊成你下載並搜索各類語言和框架的API文檔,而且速度很是快。
最快訪問文檔的方式。爲了使搜索更快。我把Dash和Alfred集成起來使用。
是的,這裏僅僅列舉了一個工具。我不想引入真正的第三方庫列表,因爲它們屬於全然不一樣的還有一個列表。
當咱們談到依賴管理的時候。最最重要的就是:
贊成你輕鬆高速地將第三方庫集成到你的應用中。它是經過建立還有一個靜態庫project。而後本身主動連接到你的project來實現的。有成千上萬個可用的pod,可以輕鬆地爲你的項目添加那些不屬於你(或者私有)的第三方庫支持。我在個人每個項目裏都用了CocoaPods。
有時候咱們正在開發應用。咱們想更好的瞭解究竟發生了什麼,修bug或者改善性能。
查看屏幕上視圖元素的精確維度,打印視圖層次,甚至水平或垂直移動視圖。
因爲它是個HTTP通道API, 搭建簡單,你僅僅需要更換你的主機名就能夠了。
它還帶有一個通知中心監視器,你可以輕鬆看到發出了哪些NSNotification。誰在觀察它們。
還有一個監控NSNotification的應用是Reveal。
一般8位PNG圖不帶有alpha通道。所以假設你的圖片可以用8位來表示(比方一個單色的button)的話。你可以經過把25位PNG轉成8位的來節省很是多空間。
圖片更小意味着應用尺寸更小,執行時載入它們所使用的內存也更小。
終於你的iOS應用很是可能會和server通訊分享數據、獲取新內容、發送推送通知等等。儘管你都可以手動去作,但你也許想要更方便的解決方式。
它創建在不少開源ruby gem的基礎上,所以假設你想要的話可以挑選構建你本身的棧。
看一下Nomad CLI,有很是多好用的相關工具。
實現推送通知至關簡單。
這裏還有些別的選擇,但沒有一個讓我認爲有衝動把flurry換掉的。我樂於聽取意見。歡迎在評論裏告訴我吧。
可以用來本身主動化不少過程。
測試人員可以獲得一個連接。無線安裝新的測試版本號。
它還提供了健壯的崩潰報告功能。你可以輕鬆應對你應用中的崩潰。
咱們使用TestFlight已經取得了很是大成功。輕鬆公佈應用,從用戶那收集反饋。
我惟一但願他們能對這個服務進行收費。它還包含了分析和崩潰報告功能,但咱們沒實用到那些功能。
對於App Store或者普通市場上的一些截屏很是實用。
Status Magic讓你充分定製你的狀態欄。包含去除一些元素,把時間改爲蘋果喜歡的「9:41 AM」那樣。等等。
在公佈版裏本身主動上傳dSYM文件,所以你的崩潰日誌會爲你本身主動符號化並組織好。你可以專一於最關鍵的部分。
我認爲咱們做爲一個社區對測試關注得還不夠。
有很是多不錯的工具可用,大多數都很是好用,咱們沒有藉口不爲咱們的應用寫一些測試。
它相同帶有健壯的mocking以及stubbing庫和斷言。
下面的幾個都可以用來執行端到端的驗收測試。
這些測試會和你的界面交互,點擊button,滾動,等等。
儘管上它們執行會比較慢,但是在大範圍內測試會更easy看到所有的模塊整合的是否良好。
你固然想要知道你的應用能賺多少錢。不是麼?有一些解決方式。這兒有些還不錯的: