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