1

我在 xcode 中有以下代码,想检查“link”的内容,它是在 for 循环中声明的本地对象“ReaderDocumentLink *link”,我在“result = [self annotationLinkTarget:link”行设置断点。字典];” 如下图:

-(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”,但它不起作用。(它报告错误如下:

错误:“链接”的类型未知;将其转换为其声明的类型以使用它

error: 1 解析表达式错误

那么我该怎么做才能打印出“链接”对象中的详细信息呢?包括 link.dictionary 的内容。谢谢。

4

3 回答 3

1

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

您可以将项目变成断点内的对象,但这也很麻烦,例如 [NSNumber numberWithFloat:5.5] 然后 po 。

链接应该在这里工作。也许您正试图在超出范围的线路上执行 po ?

于 2013-01-20T03:29:13.130 回答
0

无论NSLog是每个属性ReaderDocumentLink

description覆盖 mdthodReaderDocumentLink并使用NSLog(@"%@",link):

于 2013-01-20T03:25:29.787 回答
0

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

但是我已经看到“po”发生了奇怪的事情,尤其是“点语法”。
因此,如果您尝试po link.dictionary但失败了,我建议您po [link dictionary];使用或不使用“;” 我不认为这有什么不同。(我不知道为什么有时点语法可以完美地工作而其他时候却不能)

此外,如果我在“po”中打错字并收到错误消息,无论我在失败后尝试“po”什么,我都见过很多次,所以添加到继续(或杀死我没有的应用程序)回忆)并再次转到那个断点。

当然,请确保您link在范围内执行“po”。

如果没有任何效果,请尝试关闭 Xcode,有时它是解决方案。

于 2013-01-20T03:41:51.200 回答