关于Objective C:iOS在代码中找到与模拟器中的视图相对应的文件

iOS find file in code that corresponds to a view in the simulator

我正在开发中等大小的iOS代码库,而不是主要开发人员。我经常发现自己处于在iOS模拟器中运行该应用程序的位置,看到一个我知道我想编辑或使用的视图(例如,一个我希望获得其文本的textview),但是却没有一个好的选择。将该视图追溯到代码库中的文件的方法。我的问题是,是否有任何好的方法(确定性或启发式)从一个视图中"追溯"到一个视图,该视图在iOS模拟器中应用程序的运行实例中返回到实际定义/包含的代码文件/界面构建器文件中说观点?

例如,我在模拟器中看到一个文本视图,希望对其文本进行不同的设置,并且我想找到一种方法,以查找该文本视图在其中定义的.xib / storyboard和/或为其定义的任何IBOutlet。我尝试使用Reveal App,该应用程序似乎提供了有关该应用程序的整体视图结构和视图类的一些信息,但是我无法将其引用回代码和/或界面构建器文件。 Reveal App确实显示了视图的内存地址-也许有一种方法可以将其与lldb结合使用,以确定视图来自哪个文件?


我知道这是一个非常老的问题。但是,如果您仍在寻找答案,则可以在任意位置中断执行,并使用lldb打印一些信息。

然后,例如,如果您的应用程序像大多数其他应用程序一样,都具有UINavigationController作为根视图控制器,那么您可以尝试看看顶层视图控制器是什么。如果那是一个TabView,则需要进一步挖掘..您会得到漂移...

1
po [(UINavigationController *)[[[UIApplication sharedApplication] keyWindow] rootViewController] topViewController]

这似乎工作得很好。不太简单,但也不是一件坏事。


一种执行此操作的方法是Ctrl单击要编辑的outlets(文本视图或其他),然后查看连接的位置。或者,您可以单击需要编辑的项目,然后检查右侧的"连接检查器",然后查看其连接的内容。

这不会告诉您确切的位置,但是可以告诉您想法。然后,您可以梳理它所指向的区域中的代码,并查看其引用位置和其他内容。

如果您以这种方式执行此操作,则可以看到该outlets的名称,然后可以在该outlets的代码或项目中进行搜索。