2012-09-25 33 views
2

我最近繼承了一個相對較小的iOS應用程序的維護。該應用程序由外部承包商創建,幾乎沒有任何指導和監督。不用說,它需要「一點點」清潔 - 我正在評估是否重做整個事情。用'懸掛UIViews'來調試iOS應用程序有什麼好的策略?

讓我難堪的一件事是應用程序崩潰,調試器顯示「應用程序在應用程序啓動結束時應該有一個根視圖控制器」。在發生這種情況的模塊中,我研究了所有的UIViews,以確保它們是用父級創建的(addSubView設置了根視圖控制器,對嗎?) - 這看起來似乎是完全正確的。

作爲XCode的新手,我不熟悉那些能幫助我弄清楚可能會發生什麼的設施。例如,我如何快速查看/調查由模塊創建的所有UIViews的狀態?我怎樣才能'看'一個變量只是在它發生變化時被提醒?總而言之,是否有最好的策略來解決上述問題?

對不起留有點模糊,但我不認爲發佈一堆醜陋的代碼可以幫助你理解:-)

回答

1

,當應用程序的UIWindow沒有發生特別的問題,這個問題更好它的rootViewController屬性在完成啓動時的值。看看你的應用程序委託文件 - 通常,在那裏的窗口上設置根視圖控制器。

關於更一般的問題:有很多方法可以在程序運行時檢查程序的狀態。轉儲一些信息的一個非常基本的方法是使用NSLog語句 - 您可以將消息打印到控制檯,就像C printf一樣。您也可以在應用程序中設置斷點並使用調試器來檢查不同的變量 - 查看lldb文檔以獲取更多信息。

+0

稍微擴展一下:在iOS 4之前,您只是將您的根控制器添加到窗口並忘記了它。從4開始,你打算明確設置'rootViewController'屬性。或者您的合同工作發生在前一段時間,或者您的合同工非常魯莽地忽略API更改並忽略運行時警告。 – Tommy

+0

@Tommy通過在appDelegate中設置window.rootViewController,我能夠很快解決問題。是的,'魯莽'似乎是他們在做什麼的合適名詞---( – Yohst

+0

@Tim,感謝您的回答,我曾希望XCode有比NSLog更好的東西,但這個小功能是多功能的,看起來XCode的調試功能需要有點更新,好吧,現在我知道不要去尋找更好的東西了...... – Yohst

0

無論你是否擁有「懸掛」UIViews與擁有根視圖控制器沒有太大關係。

相反,您應該確保您的應用的UIWindow在應用代表appDidFinishLaunching方法的末尾有rootViewController

相關問題