(技巧分享)老生常談的符號斷點 for Xcode ,找出你想要的ViewController

背景

小清新

Xcode中的符號斷點(Symbolic breakpoint)可以針對某一個方法設置斷點并暫停執行(如不懂符號斷點的小伙伴們網上隨便一搜都能入門了)。因此我們可以利用這特性,維護項目的時候可以不用看源代碼直接運行APP就能快速的了解到當前所運行的頁面是屬于哪一個ViewController

本技巧需了解符號斷點,本篇只是利用此特性來總結的一個開發技巧分享。所以不涉及到斷點這一塊的知識。

開始

既然我們知道符號斷點(Symbolic breakpoint)可以讓某一個函數暫停,而我們的ViewController幾乎都有實現viewDidLoad方法(沒實現的我還沒真沒碰到過。。。),然而每進入一個頁面都會調用viewDidLoad函數,因此我們就打一個符號斷點讓它暫停在UIViewControllerviewDidLoad方法,然后每次進入到APP的頁面就可以在我們的Xcode的左側堆棧一欄看到調用順序。

斷點設置GIF圖如下:

斷點設置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

當然如果有更好的技巧也歡迎告知,以上純屬筆者個人經驗分享。如需轉載請注明原文地址。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 轉載 與調試器共舞 - LLDB 的華爾茲: https://objccn.io/issue-19-2/ 推薦:i...
    F麥子閱讀 3,349評論 0 10
  • LLDB的Xcode默認的調試器,它與LLVM編譯器一起,帶給我們更豐富的流程控制和數據檢測的調試功能。平時用Xc...
    CoderSC閱讀 1,379評論 0 2
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,180評論 4 61
  • 《凝望著深秋雨夜的感傷》 一周都在下的蒙蒙細雨雨 和他忠實小伙伴 秋風 打落棗樹和石榴樹 僅剩的 最后遮羞的外衣 ...
    孫子曰閱讀 323評論 2 2
  • 大鬧天宮! 誘惑! 大鬧天宮!! 誘惑!! 大鬧天宮!!! 誘惑!!! ………… 我實在忍受不了了!! 我好想報名...
    愛生活挺自己閱讀 181評論 0 0