转载

(技巧分享)老生常谈的符号断点 for Xcode ,找出你想要的ViewController

(技巧分享)老生常谈的符号断点 for Xcode ,找出你想要的ViewController

Xcode中的 符号断点(Symbolic breakpoint) 可以针对某一个方法设置断点并暂停执行(如不懂符号断点的小伙伴们网上随便一搜都能入门了)。因此我们可以利用这特性,维护项目的时候可以不用看源代码直接运行APP就能快速的了解到当前所运行的页面是属于哪一个 ViewController

本技巧需了解符号断点,本篇只是利用此特性来总结的一个开发技巧分享。所以不涉及到断点这一块的知识。

开始

既然我们知道 符号断点(Symbolic breakpoint) 可以让某一个函数暂停,而我们的 ViewController 几乎都有实现 viewDidLoad 方法(没实现的我还没真没碰到过。。。),然而每进入一个页面都会调用 viewDidLoad 函数,因此我们就打一个符号断点让它暂停在 UIViewControllerviewDidLoad 方法,然后每次进入到APP的页面就可以在我们的 Xcode 的左侧堆栈一栏看到调用顺序。

断点设置GIF图如下:

(技巧分享)老生常谈的符号断点 for Xcode ,找出你想要的ViewController

左侧堆栈示例图如下:

(技巧分享)老生常谈的符号断点 for Xcode ,找出你想要的ViewController

最下面那个黑色的类名就是我们APP页面显示所对应的ViewController

优化

虽然以上步骤是实现了我们的需求,but…每次要找一个页面是属于哪一个 ViewController 的时候,都会在 xcode 里暂停,而且还要在左侧栏的堆栈,而且重点还是每次我显示一个页面他都要执行这个符号断点并且暂停在 Xcode 里(虽然可以禁止断点,当需要使用的时候在打开,但笔者觉得还是略麻烦)。

so… 笔者觉得把断点加在 BaseViewController 里,然后我们让断点的 automatically continue after evaluating actions 选项勾上,这样它就会安安静静的执行不会暂停了。然后我们在断点里添加一个 debug 命令,命令为 po self 把当前的 ViewController 打印在控制台即可(如下示例图)。

(技巧分享)老生常谈的符号断点 for Xcode ,找出你想要的ViewController

大多数项目里的 ViewController 都是继承自 BaseViewController ,而 BaseViewController 又是继承与 UIViewController 的。而上面的示例图里的 NMBaseViewController 就是我们项目的 BaseViewController 。所以把符号断点设置到 NMBaseViewController 即可,至于为什么不设置到 UIViewController ,那是因为在控制台里使用 po 命令找不到 self 这个标志。

最后

只是根据个人经验总结出来的一个小技巧,个人觉得用处还是蛮大的。因为当你在维护项目的时候,有时候要修改某一个页面的东西往往要先找到这个页面所对应的 Controller ,如果纯属的去看代码追踪流程来得知某一页面是属于哪一个 Controller ,工作量必然很大。而且一个项目稍微偏大点,有时候自己写过的东西都忘了那个页面所对应的 Controller 叫什么名字了。。所以用这个小技巧能快速定位到页面所对应的 Controller

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

原文  http://xiaopingblog.cn/2016/06/06/untitled-1463582900511/
正文到此结束
Loading...