背景
Xcode中的符號斷點(Symbolic breakpoint)
可以針對某一個方法設置斷點并暫停執行(如不懂符號斷點的小伙伴們網上隨便一搜都能入門了)。因此我們可以利用這特性,維護項目的時候可以不用看源代碼直接運行APP就能快速的了解到當前所運行的頁面是屬于哪一個ViewController
。
本技巧需了解符號斷點,本篇只是利用此特性來總結的一個開發技巧分享。所以不涉及到斷點這一塊的知識。
開始
既然我們知道符號斷點(Symbolic breakpoint)
可以讓某一個函數暫停,而我們的ViewController
幾乎都有實現viewDidLoad
方法(沒實現的我還沒真沒碰到過。。。),然而每進入一個頁面都會調用viewDidLoad
函數,因此我們就打一個符號斷點讓它暫停在UIViewController
的viewDidLoad
方法,然后每次進入到APP的頁面就可以在我們的Xcode
的左側堆棧一欄看到調用順序。
斷點設置GIF圖如下:
左側堆棧示例圖如下:
最下面那個黑色的類名就是我們APP頁面顯示所對應的ViewController
優化
雖然以上步驟是實現了我們的需求,but...每次要找一個頁面是屬于哪一個ViewController
的時候,都會在xcode
里暫停,而且還要在左側欄的堆棧,而且重點還是每次我顯示一個頁面他都要執行這個符號斷點并且暫停在Xcode
里(雖然可以禁止斷點,當需要使用的時候在打開,但筆者覺得還是略麻煩)。
so... 筆者覺得把斷點加在BaseViewController
里,然后我們讓斷點的automatically continue after evaluating actions
選項勾上,這樣它就會安安靜靜的執行不會暫停了。然后我們在斷點里添加一個debug
命令,命令為po self
把當前的ViewController
打印在控制臺即可(如下示例圖)。
大多數項目里的
ViewController
都是繼承自BaseViewController
,而BaseViewController
又是繼承與UIViewController
的。而上面的示例圖里的NMBaseViewController
就是我們項目的BaseViewController
。所以把符號斷點設置到NMBaseViewController
即可,至于為什么不設置到UIViewController
,那是因為在控制臺里使用po
命令找不到self
這個標志。
最后
只是根據個人經驗總結出來的一個小技巧,個人覺得用處還是蠻大的。因為當你在維護項目的時候,有時候要修改某一個頁面的東西往往要先找到這個頁面所對應的Controller
,如果純屬的去看代碼追蹤流程來得知某一頁面是屬于哪一個Controller
,工作量必然很大。而且一個項目稍微偏大點,有時候自己寫過的東西都忘了那個頁面所對應的Controller
叫什么名字了。。所以用這個小技巧能快速定位到頁面所對應的Controller
。
當然如果有更好的技巧也歡迎告知,以上純屬筆者個人經驗分享。如需轉載請注明原文地址。