使用“悬空UIViews”调试iOS应用程序的好策略是什么?

时间:2012-09-25 16:06:51

标签: ios cocoa-touch uiview uiviewcontroller

我最近继承了相对较小的iOS应用程序的维护。该应用程序由外部承包商创建,几乎没有指导和监督。不用说它需要“一点点”清洁 - 我正在评估是否要重做整个事情。

令我难过的一件事是应用程序崩溃,调试器显示“应用程序在应用程序启动结束时应该有一个根视图控制器”。在发生这种情况的模块中,我研究了所有UIViews以确保它们是用父创建的(addSubView设置了根视图控制器,对吧?) - 这看起来都很正常。

对于XCode而言,我不熟悉可以帮助我弄清楚可能会发生什么的设施。例如,如何快速查看/调查模块创建的所有UIView的状态?我怎样才能“观察”变量,以便在变化时发出警报?总的来说,是否有最佳策略可用于解决上述问题?

很抱歉保持有点模糊,但我不认为发布一堆丑陋的代码可以帮助您更好地理解问题: - )

2 个答案:

答案 0 :(得分:1)

当应用程序的UIWindow在完成启动时没有rootViewController属性的值时,会发生该特定问题。查看您的应用程序委托文件 - 通常,在那里的窗口上设置根视图控制器。

关于更一般的问题:有多种方法可以在程序运行时检查程序的状态。转储某些信息的一种非常基本的方法是使用NSLog语句 - 您可以将消息打印到控制台,其方式与C printf非常相似。您还可以在应用程序中设置断点并使用调试器检查不同的变量 - 有关详细信息,请查看lldb文档。

答案 1 :(得分:0)

你是否“悬挂”UIViews与没有根视图控制器没什么关系。

相反,您应确保应用程序UIWindow在应用程序结束时rootViewController委托appDidFinishLaunching方法。