gpt4 book ai didi

Xcode 调试器——检查深度嵌套的对象

转载 作者:行者123 更新时间:2023-12-01 04:15:54 26 4
gpt4 key购买 nike

我有一个递归下降树对象。我希望能够设置断点并在 Xcode 调试器中检查它。检查顶层工作得很好。但是在我下降一个级别后,调试器说 ivars 的值超出了范围。有什么办法可以防止这种情况发生吗?

编辑:

回应评论——

ivar 是 Expression 类的对象。嵌套主要来自主体 ivar,它通常是表达式对象的 NSMutableArray。所以你可能有这样的结构:

-表达
--- body (2个表达)
-----0 表情
-------正文(1个表达)
----------0 表达式
------------ body [空]
-----1 表达
-------body [空]

还有一个头部 ivar,它是 Token 类的一个对象,它又具有一些字符串 ivars,不嵌套。

我使用调试器的方式——我在 Expression 对象内的方法中设置了一个断点。然后我点击显示三角形的参数,然后是自我,然后是 body ivar,然后是 body ivar 中的表达式,依此类推。但最终调试器不再告诉我事物的值(value)。

最佳答案

我建议将此添加到您的 Expression类(class)。那么您可以po [expression explode]在调试器中打印表达式树。先决条件是适当的-description您的方法 Expression打印出其余 ivars 的类。

- (void) explodeAtLevel:(int)aLevel {
NSMutableString* out = [[NSMutableString alloc] init];

for (int i = 0; i < aLevel; i++) [out appendString:@"-"];

[out appendString:self.description];
printf("%s\n", [out UTF8String]);
[out release];

for (id *subitem in body)
if ([subitem isMemberOfClass:[Expression class]])
[((Expression*)subitem) explodeAtLevel:(aLevel + 1)];
}


- (void) explode {
[self explodeAtLevel:0];
}

关于Xcode 调试器——检查深度嵌套的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3856835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com