如何在xcode调试器中查看局部变量/对象内容

时间:2013-01-20 03:09:57

标签: xcode

我在xcode中有以下代码片段,并且想要检查“link”的内容,这是在for循环中声明的本地对象“ReaderDocumentLink * link”,我在该行设置了断点 “result = [self annotationLinkTarget:link.dictionary];”如下所示:

-(id)singleTap:(UITapGestureRecognizer *)recognizer
{
    id result = nil; // Tap result object

    if (recognizer.state == UIGestureRecognizerStateRecognized)
    {
        if (_links.count > 0) // Process the single tap
        {
            CGPoint point = [recognizer locationInView:self];

            for (ReaderDocumentLink *link in _links) // Enumerate links
            {
                if (CGRectContainsPoint(link.rect, point) == true) // Found it
                {
                    result = [self annotationLinkTarget:link.dictionary]; 
                    break;
                }
            }
        }
    }

    return result;
}

我试过“po link”但它不起作用。 (它报告错误如下:

错误:'link'的类型未知;将它转换为声明的类型以使用它

错误:解析表达式时出错1个

那么我该如何打印出“链接”对象中的细节呢?包括link.dictionary的内容。感谢。

3 个答案:

答案 0 :(得分:1)

Xcode添加了日志断点的概念。这就是OP所要求的。并且他遇到了其中一个最大的停留点:po必须在具有描述方法的类型上松动。由于这个原因,我不会使用这些:在代码中仍有太多的整数类型要检查。

您可以将项目转换为断点内的对象,但这也是一种麻烦,例如[NSNumber numberWithFloat:5.5]然后po那个。

链接应该在这里工作。也许你正试图在一条超出范围的地方做点什么?

答案 1 :(得分:0)

NSLog

的每个属性ReaderDocumentLink

或覆盖description中的ReaderDocumentLink方法并使用NSLog(@"%@",link):

答案 2 :(得分:0)

我同意Rob的意见,它应该在这里工作,。

但我看到'po'特别是“点语法”会发生奇怪的事情 因此,如果您尝试po link.dictionary并且失败了 我建议做po [link dictionary];有或没有“;”我不认为它有所作为。 (我不知道为什么有些时候dot syntaxe工作得很好而有时候却没有)

此外,我已经看过时间,如果我在“po”中输入错误并收到错误消息,无论我会尝试“po”后失败,所以添加到命中继续(或杀死应用程序我不记得了)再次进入那个断点。

当然,link在范围内时确保你正在做“po”。

如果没有任何工作可以尝试关闭Xcode,有时候就是解决方案。