(技巧分享)老生常谈的符号断点 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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载 与调试器共舞 - LLDB 的华尔兹: https://objccn.io/issue-19-2/ 推荐:i...
    F麦子阅读 3,463评论 0 10
  • LLDB的Xcode默认的调试器,它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能。平时用Xc...
    CoderSC阅读 1,514评论 0 2
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 15,692评论 4 61
  • 《凝望着深秋雨夜的感伤》 一周都在下的蒙蒙细雨雨 和他忠实小伙伴 秋风 打落枣树和石榴树 仅剩的 最后遮羞的外衣 ...
    孙子曰阅读 364评论 2 2
  • 大闹天宫! 诱惑! 大闹天宫!! 诱惑!! 大闹天宫!!! 诱惑!!! ………… 我实在忍受不了了!! 我好想报名...
    爱生活挺自己阅读 210评论 0 0

友情链接更多精彩内容