2011-12-21 60 views
3

我有一個大型的Xcode項目,只有內嵌文檔,由具有與我習慣的非常不同的編碼風格的人編寫。最佳方法:閱讀並理解未知的Xcode項目

我現在的問題是,如果有人能夠給我一些指導,如何儘可能快地閱讀和理解未知的Xcode項目?


我試了一下:

首先我跑的應用程序。然後我嘗試從application:didFinishLaunchingWithOptions:委託方法開始(從iOS的情況下)逐個拋出項目方法調用。但很快我意識到,這會消耗太多時間。所以我嘗試使用一些工具: 我用一個名爲Graffle的工具生成了一個UML圖。它生成了一個平面圖,其中的所有Xcode文件與它們在項目導航器中的外觀非常相似 - 完全沒有任何幫助。 然後我試圖找到一個調用圖工具,希望能夠說明書面方法的所有交互。不幸的是,我只找到了其他平臺的工具。然後我開始使用Instruments Profiler,但從來沒有達到真正幫助我的地步(也許還因爲我不明白如何正確使用我的方法)。

那麼,我想知道你的專家是如何工作的(一步一步地)拋出一個你沒有寫的客觀C代碼?任何鏈接,圖書推薦,樣本測試代碼或其他都非常受歡迎。謝謝。

+1

這是一個有趣的問題,但我不知道它是否是一個好的SO問題......「正確的」答案是什麼?不要驚訝,如果這被移動或關閉不具建設性。 – jrturton 2011-12-21 10:51:55

+0

@jrturton Thx,你也許是對的。我決定這樣做,因爲我相信有一些「正確的」答案。也許不是一個答案,而是很多。我看到一些非常類似的問題,例如[this](http://stackoverflow.com/questions/155964/what-are-best-practices-that-you-use-when-writing-objective-c-and-cocoa)同樣的問題,他們很有名。因此,我相信社區喜歡這類問題,它們應該是SO的一部分。 – 2011-12-21 11:24:02

回答

1

我假設你已經熟悉iOS及其庫。如果不是,那將是你的第一步。

你不一定會從類轉儲或UML中獲得太多的用處,因爲很多調用並不是從你將看到的代碼中明確做出的 - 特別是我在考慮委託方法。

我會從nib文件或故事板開始。按照導航通過應用程序 - 從用戶看到的第一個屏幕開始,沿着樹的每個可能的分支進行操作。大多數響應用戶可以執行的操作的邏輯都將位於viewcontroller子類中,或鏈接到界面構建器中的UI對象。

數據模型(如果存在的話)應該能夠被理解而不需要參考任何代碼。瞭解你的頭腦,看看它與用戶界面的流程有何關係。

2

首先,我很同情。有時理解別人的代碼比重新寫自己需要更長的時間。

就我個人而言,我會把NSLog語句放在所有相關方法的開頭。然後,我會從applicationDidFinishLaunching註釋掉方法調用開始,嘗試讓應用程序逐步運行,並逐漸通過方法重新啓用方法。

1

兩個好的地方開始尋找總是;

  1. 是否有MainWindow.nib文件,在這種情況下,您可以看到如何設置視圖控制器層次結構。
  2. 搜索applicationDidFinishLaunching:withOptions:委託方法,這是一切開始的地方。

從那裏,它是所有關於尋找突破點的好地方。

2

除了上述建議,作爲一個免費的工具,你可以嘗試使用Doxygen:www.doxygen.com

輸出內容可包括:

  • 超鏈接的源代碼(點擊標識 - >示出了它的定義)
  • 頭依賴(包括&包括按圖表)
  • 函數調用的依賴性(鏈接到所有調用的函數)
  • 類層次結構(圖表,鏈接)
  • 指數的命名空間,類名,等等...

你也可以給一個旋JetBrains公司AppCode(30天試用版):www.jetbrains.com

它旨在幫助代碼的幫助,導航,分析,轉換和重構。

相關問題