为什么我在调试期间使用断点时无法在iPad模拟器中看到我的标签?

时间:2011-03-09 16:26:59

标签: iphone debugging ipad ios simulator

当我在代码中使用断点设置ANYWHERE构建和调试时,模拟器窗口全黑,我看不到我的标签。如果我在没有设置任何断点的情况下构建和调试,我可以看到我的标签。有人可以帮忙吗?我希望能够在Xcode调试器中逐行浏览标签,按钮等时发生变化。顺便说一下,我的程序使用代码动态创建并将我的UILabel放到主视图上。

在使用断点进行调试时,其他人是否能够看到标签和按钮?我是iOS(4.2)开发和Objective-C的新手。

3 个答案:

答案 0 :(得分:0)

只要您使用断点暂停执行,就不会更新任何UI。所以你不能用这种方式调试。虽然您将能够看到变量和属性。例如,在调试器中,您可以在设置后检查标签的text属性是否已更改,但在继续执行之前,UI无法更新。

答案 1 :(得分:0)

您需要发布运行日志,以确定设置断点时屏幕为黑色的原因。我怀疑你是在抽奖周期之前设置断点,但你的问题有点不清楚。

就您在单步执行代码时看到标签更改的目标而言,这表明对绘图循环的误解。当您的代码运行时,它将更改标签数据结构,并可能导致在标签上调用setNeedsDisplay:(这通常在需要时自动调用)。当下一个绘图周期发生时,将重绘标记为显示的视图。这将导致drawRect:被调用,但仍然不会在屏幕上绘制。它只是插入一个缓冲区。完成所有drawRect:次调用后,缓冲区将同步到屏幕。

在这个循环中没有必要设置一个像label.text = @"newstuff"这样的方法的断点,并希望当你跳过它时它会显示在屏幕上。

答案 2 :(得分:0)

确保在击中断点后点击“继续”箭头(可能会重复发生)。 Xcode调试窗口有一个更大的继续箭头。在你点击继续之前,模拟的操作系统永远不会在UI运行循环中获得时间来更新它的窗口。