在項目中搜尋檔案
随着項目的深入,工程中的各種組、類檔案、資源檔案的數量越來越龐大。這時在項目中快速定位目标檔案變得越來越困難。Xcode充分認識到這一點,并提供給開發者四個友善、快捷的功能,以輔助開發者快速查找、定位目标檔案或代碼段。
通過名稱過濾檔案
在項目導航器的底部,有一個[Show files with matching name]檔案名過濾框。您可以在此處輸入待查找的檔案的一部分名稱,快速過濾項目中名稱包含指定輸入内容的檔案。如圖2-1-10所示,在輸入框内輸入view,然後過濾出了名稱中包含view的檔案,并且view以高亮的方式顯示在檔案名稱中。

圖2-1-10使用檔案名過濾框快速查找檔案
在檔案名過濾框的右側有三個按鈕,它們的作用依次是:
v 取消過濾按鈕 :用來取消對項目檔案按照名稱的過濾操作;
v Showonly recent files按鈕 :用來顯示或隐藏最近打開或使用過的檔案。當點選此按鈕時,隻顯示最近使用過的檔案,再次點選則取消對曆史檔案的過濾;
v Showonly recent files with souce-control status按鈕 :用來顯示或隐藏擁有版本控件狀态的檔案。當點選此按鈕時,将顯示被編輯後尚未被送出至版本控制中心的檔案,再次點選此按鈕,則取消對版本狀态的過濾;
使用跳轉欄
在編輯器的上方是跳轉欄Jump bar,使用跳轉欄可以快速定位處于任意層級的屬性、方法或類檔案。它提供了一種分段的層次關系的檔案路徑:
當您在某個層級的分段處點選,可以顯示該層級的項目清單,如圖2-1-11所示:
圖2-1-11
在項目清單中,點選某個檔案即可快速打開并跳轉到該檔案。這裡還有一個小技巧,當您在發住Option鍵的同時,點選項目清單中的某個檔案,可以在輔助編輯器中打開該檔案,這樣就可以友善地對比兩個代碼檔案,或者進行Storyboard元素和代碼的連接配接,如圖2-1-12所示:
圖2-1-12
在跳轉欄最左側是一個名為Related items的按鈕 ,點選它可以顯示最近打開的檔案清單,或者如果您正在使用Object-C開發項目,它也可以顯示目前正在編輯中的實作檔案(.m)對應的接口檔案(.h),如圖2-1-13所示。然後在檔案清單中,點選某個檔案即可快速打開該檔案。
圖2-1-13
在Related items按鈕的右側是兩個方向箭頭,點選這兩個箭頭,可以在最近使用的曆史檔案中進行快速跳轉。如果您是使用蘋果筆記本進行開發,也可以在觸摸闆上按下兩個手指,然後通過左右滑動在曆史檔案中進行快速切換。
使用OpenQuickly功能
您可以通過[File > Open Quickly]指令使用該功能,推薦使用[Command+ Shift + O]快捷鍵快速調出該功能,這是筆者最喜歡的一個功能。和Eclipse軟體的快速查找功能相似,您可以在搜尋框内,輸入檔案的部分名稱,快速查找并打開您想要編輯的檔案,如圖2-1-14所示。
或者在輸入框内,輸入方法的名稱,搜尋包含該方法的類檔案,然後在清單中輕按兩下,快速跳轉到目标代碼段,如圖2-1-15所示:
圖2-1-14
圖2-1-15
使用搜尋導航器
在搜尋導航器中,允許您通過輸入關鍵字,來查找項目中所有檔案,找出擁有該關鍵字的文檔或者代碼段。通過點選導航器頂部的 按鈕,進入搜尋導航器面闆,然後在搜尋框内輸入進行搜尋的關鍵詞,接着按下鍵盤上的Enter鍵即可。
如圖2-1-16所示,在搜尋框内輸入viewdidload關鍵詞,然後按下Enter鍵,搜尋出在兩個檔案中的四個結果,在其中一個搜尋結果中點選,即可快速跳轉到指定的代碼段:
圖2-1-16
6 代碼的查找和替換
在使用Object-C語言進行開發的項目中,如果需要更改一個方法的名稱,可以使用[Edit> Refactor > Rename]菜單指令,對該方法及調用該方法的地方進行方法名稱的批量修改。由于目前Refactor中的功能對Swift語言尚不能很好的支援,是以我們無法使用Rename功能,但是我們可以使用Xcode提供的[Find and Replace]功能,同樣可以實作文字替換的功能。
要調用查找和替換功能,可以依次點選[Find > Find andReplace...]菜單指令,或者使用[Command + Option + F]快捷鍵,在編輯器的上方打開查找和替換面闆。當您在上方的文本框内輸入需要查找的内容時,Xcode将在文字輸入的同時,自動查找并高亮顯示搜尋結果。然後在下方的文本框内輸入替換為的文字,接着點選右側的[All]按鈕,将檔案中的所有[addImage]文字,全部替換為[addCompanyLogo],如圖2-1-17所示:
圖2-1-17
7 代碼的Debug調試
在iOS開發工作中,您會經常使用到Xcode軟體的Debug area進行程式的調試,查找一些變量的狀态或者診斷出現的bug。在使用Debug功能之前,首先在ViewController.swift檔案中添加一個名為appendThreeViews的方法,用來往目前視圖控制器的根視圖中,添加三個UIView子視圖,代碼如下所示:
19 func appendThreeViews()
20 {
21 let firstView = UIView(frame: CGRect(x: 40,y: 80, width: 100, height: 100))
22 firstView.backgroundColor = UIColor.green()
23 self.view.addSubview(firstView)
24
25 let secondView = UIView(frame: CGRect(x:40, y: 80, width: 120, height: 120))
26 secondView.backgroundColor = UIColor.blue()
27 self.view.addSubview(secondView)
28
29 let thirdView = UIView(frame: CGRect(x: 40,y: 80, width: 140, height: 140))
30 thirdView.backgroundColor =UIColor.purple()
31 self.view.addSubview(thirdView)
32 }
在之後的章節會為您講解UIView視圖的使用,這裡您隻需要了解這些代碼的作用,是依次建立了三個位于相同位置(40,80)的視圖。它們擁有不同的背景顔色,從第一個視圖至第三個視圖依次是綠色、藍色和紫色。這三個視圖也擁有不同的尺寸,從第一個視圖至第三個視圖,尺寸依次變大,是以第三個紫色的視圖會遮擋前兩個視圖。
接着在viewDidLoad方法中調用appendThreeViews方法:
13 override func viewDidLoad() {
14 super.viewDidLoad()
15 // Do any additional setup after loadingthe view, typically from a nib.
16 appendThreeViews()
17 }
然後在第23行代碼的行号上點選滑鼠,添加一個斷點标志,當程式運作到此行代碼時,會自動停留在這個位置,如圖2-1-18所示:
圖2-1-18
然後點選Xcode界面左上角的[編譯并運作]按鈕 ,打開模拟器調試項目,項目運作後,将自動停留在第28行代碼中,并在底部的調試區顯示調試面闆。調試面闆的上方是一排調試按鈕,左側是變量資訊清單,右側是日志區。如果需要檢視firstView對象的屬性,可以在日志區的(lldb)右側輸入po指令(print object的縮小)和變量的名稱,然後按下鍵盤上的Enter鍵,檢視對象的描述資訊,如圖2-1-19所示:
圖2-1-19
您可以使用調試區頂部的一排按鈕,進行程式的調試,調試按鈕的功能如表2-2-1所示:
表2-2-1 調試按鈕功能說明 | |
調試按鈕 | 功能說明 |
調試區 | 隐藏調試區面闆。 |
斷點 | 激活所有斷點,或使所有斷點暫時失效。 |
繼續 | 跳過所有斷點,繼續程式的執行。 |
跳轉 | 跳轉至下一行代碼。 |
跳入 | 跳入所在行的方法内的第一行代碼。 |
跳出 | 從一個方法中跳出。 |
視圖層級 | 在三維視圖下顯示視窗中視圖的層級關系。 |
記憶體圖形 | 展示記憶體分類的順序和多少,如圖2-1-20所示。 |
地理位置 | 在模拟器中模拟地理位置的定位。 |
請分别使用 、、 三個按鈕進行程式的調試,最後按下 按鈕,結束程式的調試。在這些按鈕中,您可以點選Debug memory garph按鈕 ,檢視目前頁面記憶體的配置設定情況,如圖2-1-20所示,選擇左側的[ViewController]項目,在右側顯示該項目的記憶體配置設定狀況:
圖2-1-20
另外一個實用的工具是Debug View Hierachy 按鈕。做iOS移動開發,界面管理是很重要的内容,如果想要檢視夥伴制作的頁面的元素結構,或者檢視自定義控件的構成,就可以使用該工具。如圖2-1-21所示,點選[Orient to 3D]按鈕,轉換為三維視圖模式,然後拖動左側的[Adjusting the spacing between views]滑杆,調整各視圖在三維坐标系統Z軸的距離。通過拖動右側的[Adjust the range of visibleviews]滑杆,可以從前往後或者從後往前逐個隐藏視窗中的視圖,以友善您進行界面上的調試。
圖2-1-21