前言:平日里我們使用Xcode,一些常用的功能已得心應(yīng)手劳闹,但有些不常用的小技巧,也可以提高我們的效率词身。本文借鑒了網(wǎng)上的一些文章博客葱跋,整理成篇,共同學(xué)習(xí)分享魂毁。
實用小技巧
范圍編輯
很多時候,我們希望修改一個變量的名稱。若是在一個文件內(nèi)一處處去修改效率太低尺锚,而范圍編輯(Edit All in Scope,默認快捷鍵Ctrl+Command+E)惜浅,就可以選中該頁面當(dāng)前所有該變量瘫辩,進行修改。
Who did?
團隊協(xié)作時坛悉,有一些陌生的代碼錯誤了伐厌,你是否想知道是who do it ? 把光標(biāo)移動到報錯的那一行,單擊右鍵選擇然后在菜單里選擇Show Blame for Line裸影。
Address Sanitizer: 媽媽再也不用擔(dān)心 EXC_BAD_ACCESS?
EXC_BAD_ACCESS一直是很多開發(fā)者的噩夢挣轨,因為這個錯誤很不直觀,出現(xiàn)后往往要花很長時間才能定位到錯誤轩猩。
然而卷扮,在項目的Scheme中Diagnostics下,選中enable address sanitizer(注意選中后Xcode會重新編譯整個項目)均践。
這樣設(shè)置后晤锹,如果再出現(xiàn)類似的錯誤會有更詳細的錯誤信息提示,甚至?xí)袃?nèi)存使用情況的展示
靜態(tài)分析器和Inspector(檢查器)
Xcode中還有兩個工具可以幫我們清理代碼彤委,減少代碼出錯的幾率鞭铆。對Xcode而言,靜態(tài)分析器工具是一個非常棒用來改善代碼的工具焦影。比如檢測出沒有使用過的對象车遂,沒有release對象(針對Core Foundation對象封断,ARC仍然會有這樣的問題)。通過選擇Product菜單中的‘Anlayze’可以查看到相關(guān)建議艰额。
檢查器是非常強大的一組工具澄港,通過檢查器不僅可以從不同的角度檢查程序?qū)?nèi)存的使用情況,文件系統(tǒng)的使用情況(增加柄沮、刪除回梧、修改等),甚至還提供了自動UI交互的方法祖搓。通過選擇Product菜單中的‘Profile’可以查看到這些檢查器狱意。
選擇‘Profile’會打開一個Instrument窗口,這里可以選擇一個配置模板進行運行拯欧。最常用的模板有zombies详囤,activity monitor和leaks。在程序運行時镐作,對內(nèi)存泄露進行捕捉時藏姐,Leaks可能是最有用的一個模板。
Zombies是你的朋友该贾,雖然在有ARC的地方很難再遇到讓人難受的EXC_BAD_ACCESS錯誤了羔杨,但是在某些確定的情況下,該錯誤還是會發(fā)生的杨蛋。當(dāng)在處 UIPopoverController 或者 core foundation 對象時兜材,我們可以訪問一個已經(jīng)被 release 掉的對象。一般逞力,當(dāng)我們release內(nèi)存中的一個對象時曙寡,該對象將被銷毀。但是寇荧,當(dāng) Zombies開啟時举庶,只是將對象標(biāo)記為release,實際上該對象還停留在內(nèi)存中揩抡。當(dāng)我們訪問一個Zombie對象時户侥,Xcode可以告訴我們正在訪 問的對象是一個不應(yīng)該存在的對象了。因為Xcode知道這個對象是什么捅膘,所以可以讓我們知道這個對象在哪里添祸,以及這是什么時候發(fā)生的滚粟。這里有兩種方法可以查找出Zombies對象寻仗。使用檢查器中的Zombie配置模板,或者在‘Run’ build選項中開啟Zombie診斷選項凡壤。在Stop按鈕的旁邊署尤,點擊scheme名稱耙替,然后選擇‘Edit Scheme’,點擊diagnostic tab項曹体,并勾選上‘Enable Zombie Objects’俗扇。注意,Zombie只能用在模擬器調(diào)試中箕别,真機上不能使用铜幽。
發(fā)布后的crash跟蹤,輕松定位崩潰代碼
在升級iOS9后串稀,蘋果會詢問用戶是否同意收集應(yīng)用崩潰報告除抛。這樣在itunes connect的后臺統(tǒng)計中就可以看到一些收集到的數(shù)據(jù)(通常會有相當(dāng)一部分用戶不同意,所以只是部分數(shù)據(jù))母截。
查看崩潰統(tǒng)計信息:
在connect后臺中選擇app分析
進入分析頁面后到忽,tab中選擇“指標(biāo)”
然后在左側(cè)的菜單中選擇“崩潰”
這樣就可以看到蘋果收集到的崩潰統(tǒng)計,一定要注意這里只是一部分的數(shù)據(jù)清寇,舉例來說如果你看到的崩潰是10次喘漏,但是可能蘋果只收集了20%的用戶信息。所以你可以大概估計應(yīng)該是10*5=50次崩潰华烟。
在Xcode中查看具體崩潰信息
在xcode中菜單的window下選擇organizer,在打開的窗口中選擇Crashes翩迈,這樣Xcode會開始下載相關(guān)的崩潰信息到本地中(網(wǎng)絡(luò)環(huán)境不好時可能要等待一些時間)。
organizer窗口
可以在左側(cè)選擇你要查看崩潰信息的發(fā)布版本
在崩潰信息這一欄蘋果會按照崩潰數(shù)量排序垦江,將崩潰數(shù)量最多的排在最前帽馋。右側(cè)的詳細信息會顯示是崩潰時的調(diào)用堆棧,可以看到是哪行代碼導(dǎo)致的崩潰比吭。
選中要解決的崩潰后绽族,可以在窗口右側(cè)選擇 open in project 。
神奇的事情發(fā)生了q锰佟0陕!在打開的項目中赏表,會直接定位到崩潰的那行代碼检诗。這大大提高了調(diào)試的效率!我已經(jīng)的迫不及待要和開發(fā)安卓的同事分享這份喜悅了瓢剿。
注意逢慌!注意!
因為之前的項目發(fā)布時沒有用Xcode7打包间狂,所以猜測符號表可能沒有上傳到蘋果服務(wù)器攻泼,所以以前的項目可能不能直接顯示是哪行代碼,而是顯示調(diào)用時出錯的內(nèi)存地址。不過下個版本你用Xcode發(fā)布后就可以正趁Σぃ看到啦何鸡。
在解決完這個crash后可以標(biāo)記為已經(jīng)解決。有兩個地方可以標(biāo)記牛欢。
頂部不常用的菜單選項
file欄
Revert to Saved:將此文件的修改直接回退到上次保存時
Unlock :要對第三方庫或系統(tǒng)文件進行修改時解鎖
Open with External Editor :使用外部編輯器打開
Edit欄
Format - > Transformations :可以將英文轉(zhuǎn)成全大寫骡男,全小寫,首字母大寫傍睹。
Convert:轉(zhuǎn)換成ARC,swift等
Emoji & symbols:emoji表情和特殊符號
View欄
Standard Editor :標(biāo)準模塊
Assistant Editor :助理模塊
Version Editor: 版本模塊
Hide Toolbar 隱藏工具欄(XCode頂部 快捷鍵 option+cmd+T)
Show Tab Bar 隱藏標(biāo)簽欄(出現(xiàn)Tab Bar 然后可以用cmd+T添加tab頁隔盛,control+tab切換tab頁,)
Show All Tabs 顯示所有Tab頁
Find
Find Call Hierarchy:查找到調(diào)用層級拾稳。
Navigate
Reveal in Project Navigator :在項目導(dǎo)航中揭示出此文件
Reveal in Symbol Navigator :在符號導(dǎo)航中揭示出某方法
Open in Assistant Editor:用分屏助理打開
Open in .. 你想怎么打開
Jump to Definition 跳轉(zhuǎn)到定義
Editor(選中文件狀態(tài)下)
Show issue: 展示錯誤和隱藏錯誤骚亿,相當(dāng)于點左邊的按鈕
Issues: 可以控制展示全部錯誤警告,還是僅僅展示警告熊赖。
Structure->Balance Delimiter:直接選中光標(biāo)所在的整個大括號
Structure->Re-Indent : 將格式縮進整理一下 (快捷鍵 選中文字 ^+I)
Structure->Shift Right/Left :往前或往后移一個tab(Cmd+ [ 或 ] )来屠,
Structure->Move Line Up /Down :往上往下移一行 (option+cmd+[或])
Code Folding: 提供各種折疊和取消折疊
Show Invisibles: 顯示所有隱藏的東西,比如空格震鹉。
Show Blame for Line: 顯示選中的行的修改者和log俱笛。
Show Code Coverage: 展示代碼的覆蓋范圍
Editor:(選中xib狀態(tài)下)
Canvas -> Show Selection Highlights: 顯示選中控件的高亮
Canvas ->Show Resize Knobs:顯示約束旁邊的小方塊
Canvas ->Show Constraints :顯示約束
Canvas ->Show Involved Views For Selected Constraints:顯示約束涉及到的視圖
Canvas ->Show Layout Rectangles 布局矩形
Reveal in Document Outline:在左邊的層級圖中揭示出來
Arrange : 可以上移下移或移到背景等
Embed : 嵌入,可以嵌nav传趾,tabbar迎膜,scrollView
Unembed 解除嵌入
Snap to Guides:讓引導(dǎo)線具有吸附功能,讓控件靠近就自動對齊
Guides:設(shè)置引導(dǎo)標(biāo)尺線(中垂線)
Automatically Refresh Views:自動刷新視圖
Refresh All Views:刷新所有視圖
Debug Selected Views:調(diào)試選中的視圖浆兰?
Resolve Auto Layout issues:解決自動布局的問題磕仅,類似于點
Refactor to Storyboard:把VC重構(gòu)成SB?
Debug欄
Capture GPU Frame: 捕獲GPU位置
Simulate Location: 模擬模擬器的位置
Simulate Background Fetch: 讓模擬器去后臺
iCloud: 蘋果云相關(guān)
View Debugging: 關(guān)于視圖的調(diào)試
Take Screenshot of Active Device:截圖
Capture View Hierarchy: 用3D圖 來捕獲視圖層次
Show View Frame: 在模擬器上顯示各個控件的尺寸大小
Show Alignment Rectangles: 顯示對齊矩形
Show View Drawing: 顯示查看繪圖
Show Responsive Scrolling Status: 顯示響應(yīng)滾動狀態(tài)
Deactivate Breakpoints 停用中斷點簸呈。
Breakpoints: 相當(dāng)于左下角的加號榕订,增加各種斷點。
Debug Workflow:可以顯示內(nèi)存和清除打印等操作蜕便。
Always Show Disassembly: 這要是勾上就只顯示堆棧信息不看代碼
Attach to Process by PID or Name: 設(shè)置權(quán)限id或name
Attach to Progress: 附加到進程
Detach: 跳過所有的斷點
Help
API Changes:打開網(wǎng)站了解更新的API
Xcode Help :打開Xcode Help 關(guān)于xcode的詳細文檔
what is new in Xcode Xcode新特性
Release Notes:打開xcode各版本更新迭代的log劫恒。
Report an issue :提交發(fā)現(xiàn)的錯誤
實用快捷鍵
快速定位
control + L 鍵,將打印的行數(shù)輸入轿腺,Enter后两嘴,就可以立刻跳到打印的行數(shù)。配合XGLog(@"----%s----%d-------WIFI",FILE,LINE);
FILE %s 打印出在項目中哪個文件中打印的
LINE %d 打印出在項目中哪個文件中的第幾行打印的
可以用 command +shift + F 打開全局搜索族壳,將文件名復(fù)制憔辫、粘貼到框框中,按Enter鍵仿荆,在查找出的內(nèi)容中點擊文件贰您,即可進入喧务,然后輸入行數(shù)快速定位。
跳轉(zhuǎn)到方法
在使用類或者結(jié)構(gòu)時枉圃,我經(jīng)常需要快速的跳轉(zhuǎn)到類的某個特定方法。通過快捷鍵Control + 6 再輸入算法的頭幾個字母就可以非常方便的做到這點庐冯。
顯示項目導(dǎo)航器
在一個有很多文件和文件夾的大型項目中孽亲, 顯示項目導(dǎo)航命令(Reveal in Project Navigator) 可以為你節(jié)省很多時間,這個命令可以在界面左側(cè)的項目導(dǎo)航欄中顯示當(dāng)前文件展父,默認快捷是Command + Shift + J.
快速查看文檔
在任意文件中按下 command + shift + O (是字母O)
快速查看官方文檔
即打開“幫助”菜單哦:Command + shift + 0(是數(shù)字0)