iOS開發(fā)之Xcode你不常用的小知識

前言:平日里我們使用Xcode,一些常用的功能已得心應(yīng)手劳闹,但有些不常用的小技巧,也可以提高我們的效率词身。本文借鑒了網(wǎng)上的一些文章博客葱跋,整理成篇,共同學(xué)習(xí)分享魂毁。

實用小技巧

范圍編輯

很多時候,我們希望修改一個變量的名稱。若是在一個文件內(nèi)一處處去修改效率太低尺锚,而范圍編輯(Edit All in Scope,默認快捷鍵Ctrl+Command+E)惜浅,就可以選中該頁面當(dāng)前所有該變量瘫辩,進行修改。

圖1.png

圖2.png

Who did?

團隊協(xié)作時坛悉,有一些陌生的代碼錯誤了伐厌,你是否想知道是who do it ? 把光標(biāo)移動到報錯的那一行,單擊右鍵選擇然后在菜單里選擇Show Blame for Line裸影。

圖3.png

Address Sanitizer: 媽媽再也不用擔(dān)心 EXC_BAD_ACCESS?

EXC_BAD_ACCESS一直是很多開發(fā)者的噩夢挣轨,因為這個錯誤很不直觀,出現(xiàn)后往往要花很長時間才能定位到錯誤轩猩。
然而卷扮,在項目的SchemeDiagnostics下,選中enable address sanitizer(注意選中后Xcode會重新編譯整個項目)均践。

圖4.jpg

這樣設(shè)置后晤锹,如果再出現(xiàn)類似的錯誤會有更詳細的錯誤信息提示,甚至?xí)袃?nèi)存使用情況的展示
圖5.png

靜態(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 monitorleaks。在程序運行時镐作,對內(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)試中箕别,真機上不能使用铜幽。

圖6.jpg

發(fā)布后的crash跟蹤,輕松定位崩潰代碼

在升級iOS9后串稀,蘋果會詢問用戶是否同意收集應(yīng)用崩潰報告除抛。這樣在itunes connect的后臺統(tǒng)計中就可以看到一些收集到的數(shù)據(jù)(通常會有相當(dāng)一部分用戶不同意,所以只是部分數(shù)據(jù))母截。
查看崩潰統(tǒng)計信息:
在connect后臺中選擇app分析

圖7.jpg

進入分析頁面后到忽,tab中選擇“指標(biāo)
圖8.jpg

然后在左側(cè)的菜單中選擇“崩潰
圖9.jpg

這樣就可以看到蘋果收集到的崩潰統(tǒng)計,一定要注意這里只是一部分的數(shù)據(jù)清寇,舉例來說如果你看到的崩潰是10次喘漏,但是可能蘋果只收集了20%的用戶信息。所以你可以大概估計應(yīng)該是10*5=50次崩潰华烟。
在Xcode中查看具體崩潰信息
在xcode中菜單的window下選擇organizer,在打開的窗口中選擇Crashes翩迈,這樣Xcode會開始下載相關(guān)的崩潰信息到本地中(網(wǎng)絡(luò)環(huán)境不好時可能要等待一些時間)。
圖10.jpg

organizer窗口
可以在左側(cè)選擇你要查看崩潰信息的發(fā)布版本
圖11.jpg

圖12.jpg

在崩潰信息這一欄蘋果會按照崩潰數(shù)量排序垦江,將崩潰數(shù)量最多的排在最前帽馋。右側(cè)的詳細信息會顯示是崩潰時的調(diào)用堆棧,可以看到是哪行代碼導(dǎo)致的崩潰比吭。
圖13.jpg

選中要解決的崩潰后绽族,可以在窗口右側(cè)選擇 open in project
圖14.jpg

神奇的事情發(fā)生了q锰佟0陕!在打開的項目中赏表,會直接定位到崩潰的那行代碼检诗。這大大提高了調(diào)試的效率!我已經(jīng)的迫不及待要和開發(fā)安卓的同事分享這份喜悅了瓢剿。
注意逢慌!注意!
因為之前的項目發(fā)布時沒有用Xcode7打包间狂,所以猜測符號表可能沒有上傳到蘋果服務(wù)器攻泼,所以以前的項目可能不能直接顯示是哪行代碼,而是顯示調(diào)用時出錯的內(nèi)存地址。不過下個版本你用Xcode發(fā)布后就可以正趁Σぃ看到啦何鸡。
在解決完這個crash后可以標(biāo)記為已經(jīng)解決。有兩個地方可以標(biāo)記牛欢。
圖15.jpg

圖16.jpg

頂部不常用的菜單選項

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ù)快速定位。

圖17.png

跳轉(zhuǎn)到方法

在使用類或者結(jié)構(gòu)時枉圃,我經(jīng)常需要快速的跳轉(zhuǎn)到類的某個特定方法。通過快捷鍵Control + 6 再輸入算法的頭幾個字母就可以非常方便的做到這點庐冯。

圖18.png

顯示項目導(dǎo)航器

在一個有很多文件和文件夾的大型項目中孽亲, 顯示項目導(dǎo)航命令(Reveal in Project Navigator) 可以為你節(jié)省很多時間,這個命令可以在界面左側(cè)的項目導(dǎo)航欄中顯示當(dāng)前文件展父,默認快捷是Command + Shift + J.

快速查看文檔

在任意文件中按下 command + shift + O (是字母O)

圖19.png

快速查看官方文檔

即打開“幫助”菜單哦:Command + shift + 0(是數(shù)字0)

圖20.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末返劲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子栖茉,更是在濱河造成了極大的恐慌篮绿,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吕漂,死亡現(xiàn)場離奇詭異亲配,居然都是意外死亡,警方通過查閱死者的電腦和手機惶凝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門吼虎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人苍鲜,你說我怎么就攤上這事思灰。” “怎么了混滔?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵洒疚,是天一觀的道長。 經(jīng)常有香客問我坯屿,道長油湖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任领跛,我火速辦了婚禮肺魁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘隔节。我一直安慰自己鹅经,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布怎诫。 她就那樣靜靜地躺著瘾晃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪幻妓。 梳的紋絲不亂的頭發(fā)上蹦误,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天劫拢,我揣著相機與錄音,去河邊找鬼强胰。 笑死舱沧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的偶洋。 我是一名探鬼主播熟吏,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼玄窝!你這毒婦竟也來了牵寺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤恩脂,失蹤者是張志新(化名)和其女友劉穎帽氓,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俩块,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡黎休,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了玉凯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奋渔。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖壮啊,靈堂內(nèi)的尸體忽然破棺而出嫉鲸,到底是詐尸還是另有隱情,我是刑警寧澤歹啼,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布玄渗,位于F島的核電站,受9級特大地震影響狸眼,放射性物質(zhì)發(fā)生泄漏藤树。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一拓萌、第九天 我趴在偏房一處隱蔽的房頂上張望岁钓。 院中可真熱鬧,春花似錦微王、人聲如沸屡限。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钧大。三九已至,卻和暖如春罩旋,著一層夾襖步出監(jiān)牢的瞬間啊央,已是汗流浹背眶诈。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瓜饥,地道東北人逝撬。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像乓土,于是被迫代替她去往敵國和親宪潮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容