代码之家  ›  专栏  ›  技术社区  ›  jslatts

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

  •  2
  • jslatts  · 技术社区  · 15 年前

    我正在运行一个iPhone开发教程,我有一个奇怪的bug,我正在使用调试器进行调查。我有下面的代码来检查对象是否在边界内。我试图查看ball.center.x在某一点上的值,但由于center是一个属性访问器选择器,所以在Xcode调试器中将鼠标悬停在其上时无法获取该值。

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

    4 回复  |  直到 15 年前
        1
  •  2
  •   pxl    15 年前

    此外还有令人尊敬的又快又脏:

    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
  •   nall    15 年前

    我假设中心是一个点。

    除了Xcode GUI调试器之外,在调试时还可以使用gdb提示符。试试这个:

    p* ball
    

    p ball.center
    
        3
  •  2
  •   user304015    14 年前

    试试这个 gdb 命令:

    p (CGPoint)[ball center] 
    

        4
  •  0
  •   b005t3r    14 年前

    有比使用gdb控制台更简单的方法来实现这一点。从主菜单中选择:

    Run -> Variables View -> View in expression window
    

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

    (CGPoint)[ball center]
    

    表达式窗口显示“超出范围”错误消息的主要问题是它几乎不知道函数(或方法)的返回类型,因此它不知道如何显示返回的变量。苹果给了我们一个线索,在这种情况下该怎么办 here 在“使用表达式窗口的提示”下。