最佳方法:阅读并理解未知的Xcode项目

时间:2011-12-21 10:49:50

标签: iphone objective-c xcode cocoa architecture

我有一个只有内联文档的大型Xcode项目,由我习惯的编码风格非常不同的人编写。

我现在的问题是,如果有人可以给我一些关于如何尽快阅读和理解未知Xcode项目的指南?


我尝试了什么:

首先我运行了应用程序。然后我尝试从application:didFinishLaunchingWithOptions:委托方法开始逐个调用项目方法调用(在iOS的情况下)。但很快我才意识到,这将耗费太多时间。所以我尝试使用一些工具: 我使用名为Graffle的工具生成了一个UML图。它生成了一个平面图,其中包含的所有Xcode文件与它们在项目导航器中的样子非常相似 - 这根本没有帮助。 然后我试图找到一个调用图工具,希望能够说明书面方法的所有交互。不幸的是我只找到了其他平台的工具。然后我开始使用Instruments Profiler,但从来没有达到它真正帮助我的程度(也许是因为我不明白如何正确使用它来实现我的方法)。

再次,我想知道你的专家如何自己工作(一步一步)抛出一个你没写过的客观代码?任何链接,书籍推荐,样本测试代码或其他都非常受欢迎。谢谢。

4 个答案:

答案 0 :(得分:2)

首先,我非常同情。有时理解他人的代码需要比重写自己更长的时间。

就个人而言,我会将NSLog语句放在所有相关方法的开头。然后我将从applicationDidFinishLaunching注释方法调用开始尝试让应用程序逐步工作并逐步重新启用方法。

答案 1 :(得分:2)

除上述建议外,作为免费工具,您可以尝试Doxygen:www.doxygen.com

输出可包括:

  • 超链接源代码(单击标识符 - >显示其定义)
  • 标头依赖关系(包括& by-by-graphs)
  • 函数调用依赖项(指向函数的所有调用的链接)
  • 类层次结构(图形,链接)
  • 名称空间,类名等索引......

你也可以给JetBrains AppCode(试用30天):www.jetbrains.com

它旨在帮助进行代码辅助,导航,分析,转换和重构。

答案 2 :(得分:1)

我假设您已熟悉iOS及其库。如果没有,那将是你的第一步。

您不一定会从类转储或UML中获得大量使用,因为很多调用都没有在您将看到的代码中明确地进行 - 我正在考虑特定的委托方法。

我从nib文件或故事板开始。按照应用程序导航 - 从用户看到的第一个屏幕开始,然后解决树的每个可能分支。响应用户可以执行的操作的大多数逻辑将位于viewcontroller子类内部或链接到界面构建器中的UI对象。

数据模型(如果存在)应该能够被理解而无需参考任何代码。了解它并了解它与UI流程的关系。

答案 3 :(得分:1)

开始寻找的两个好地方总是;

  1. 是否有MainWindow.nib文件,在这种情况下,您可以看到如何设置视图控制器层次结构。
  2. 搜索applicationDidFinishLaunching:withOptions:委托方法,这就是一切开始的地方。
  3. 从那里开始就是寻找破发点的好地方。