分享一个 iOS 里追踪当前所在页面 (ViewController)的小工具

2016-07-22 13:41:38 +08:00
 Shevckcccc

前言


很多时候,当你入职一家新公司或者接触一个新项目的时候,往往不知道当前 App 的展示页面到底对应哪一段代码,经常需要通过查看工程结构或者搜索具体关键字来确定到底是哪一个 ViewController,所以当有时候需要临时找一些东西的话,定位效率还是比较低的,此时我就想是不是有一种更方便的方式来直接定位到当前页面所在的具体 ViewController ,这也是 DRPageTracker 开发的初衷

项目地址


DRPageTracker https://github.com/Shevckcccc/DRPageTracker

项目介绍


其实这是一个非常简单的小项目,只有一个 Category ,原理也非常简单,就是通过 Objective-C 的运行时特性,给 UIViewController 的 viewDidAppear 方法里面加上一段代码,先执行原有的代码,再打印当前所在的 Class 名,由于是放在 Category 中,所以不需要主动 import 进来,只要能通过 pod install 安装进来就行了,非常轻量

pod 'DRPageTracker'

然后 install 一下就行了,不需要本地添加任何代码,就可以在控制台看到所有的 ViewController 展现顺序...

真的非常简单的一个小工具,比较适合新人熟悉旧代码时使用...

3776 次点击
所在节点    iDev
14 条回复
diyisoft
2016-07-22 15:06:16 +08:00
收藏了,貌似不错的功能
LINAICAI
2016-07-22 15:19:52 +08:00
意义不大,一般工程都有基类,直接基类打印就好了。
bienyur
2016-07-22 16:14:29 +08:00
hi~ :)
Shevckcccc
2016-07-22 16:18:41 +08:00
@bienyur 啊哈,居然碰到熟人了...想不到你也上 V 站了 :D
expkzb
2016-07-22 16:23:00 +08:00
@LINAICAI 有基类的工程现在越来越少了,都意识到了问题
bienyur
2016-07-22 16:29:35 +08:00
@Shevckcccc 好久没来了..竟然一进来就看到了你..这个工具也是我正需要的 感谢分享 hh
yjxjn
2016-07-22 16:32:12 +08:00
你们不 NSLOG 么??????
LINAICAI
2016-07-22 17:06:02 +08:00
@expkzb 还是需要的,特别是那种项目巨大的。
hyyy
2016-07-22 18:02:42 +08:00
@Shevckcccc
想法挺好的, AOP 编程原理,给个小小的建议,单单打印所在的 controller 名称其实有点 low 了,其实可以往 log 打印、页面 PV 统计方面延伸。^_^
mysteri0uss
2016-07-22 18:20:39 +08:00
Shevckcccc
2016-07-22 18:42:40 +08:00
@LINAICAI 如果所有的市面上的工程都有基类,并且在每个基类(BaseViewController 、 BaseTableViewController 等)里面都有打印,那的确是不需要的,但是这并不能保证,而且就我目前经历过生产项目来看,有基类的工程还是偏少的,大部分已有工程并没有 BaseViewController ,这个主要取决于当时架构的工程师习惯,不能指望所有的开发都强制建一个基类,这个也需要成本

@yjxjn 如果每一个页面都要打一次 NSLOG ,那这个成本也是蛮高的...

@hyyy 感谢建议,这个项目只花了我极少的时间.. 其实我最主要的方便查看当前的页面 VC ,这个功能达成了后续其实就没什么动力了,毕竟我的痛点已经解决了,至于如何美化,也许以后有时间会再考虑吧,或许你可以做个更好的 :D
misaka15
2016-07-23 12:24:35 +08:00
利用 Runtime 不是很轻松就能实现嘛
PrideChung
2016-07-25 00:18:10 +08:00
其实用 Symbolic Breakpoint 断在 -[UIViewController viewDidAppear:] 就好了,绿色无污染用完就关掉
Tangdixi
2016-07-29 13:58:41 +08:00
AOP 大法好, 我也干过类似的事情

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/294185

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX