在Xcode中调试时查看选择器返回值

时间:2009-10-21 17:32:53

标签: iphone objective-c xcode debugging

我正在浏览iPhone开发教程,我有一个奇怪的错误,我正在调查使用调试器。我有以下代码检查对象是否在边界内。我试图看看ball.center.x的值在某一点上是什么,但是因为center是一个属性访问器选择器,当我将它悬停在Xcode调试器中时,我没有得到该值。

if (ball.center.x > self.view.bounds.size.width || ball.center.x < 0) {
    ballVelocity.x = -ballVelocity.x;
}

有办法做到这一点吗?我想我一定是错过了什么。我想我可以更新代码以将值赋给我可以在调试器中观察的变量,但这似乎是一个普遍问题的草率工作。

谢谢!

4 个答案:

答案 0 :(得分:2)

我假设中心是CGPoint。

除了Xcode GUI调试器之外,在调试时还有一个gdb提示符。试试这个:

p* ball

p ball.center

答案 1 :(得分:2)

然后还有令人尊敬的快速和肮脏:

if (ball.center.x > self.view.bounds.size.width || ball.center.x < 0) {
    NSLog(@"ball center: %d",ball.center.x);
    ballVelocity.x = -ballVelocity.x;
}

答案 2 :(得分:2)

试试这个 gdb 命令:

p (CGPoint)[ball center] 

我在UIView.frame中使用这个技巧,它可以工作。

答案 3 :(得分:0)

除了使用gdb控制台之外,还有更简单的方法。从主菜单中选择:

Run -> Variables View -> View in expression window

在表达式窗口的文本字段中输入:

(CGPoint)[ball center]

表达式窗口显示“超出范围”错误消​​息的主要问题是它几乎从不知道函数(或方法)的返回类型,因此它不知道如何呈现返回的变量。 Apple在“使用表达式窗口的提示”窗口下为我们提供了一些线索here