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
。
当然如果有更好的技巧也欢迎告知,以上纯属笔者个人经验分享。如需转载请注明原文地址。