【问题标题】:Arrays show up in Xcode 4 debugger as empty even though they aren't数组在 Xcode 4 调试器中显示为空,即使它们不是
【发布时间】:2011-11-04 22:32:04
【问题描述】:

我在调试一些代码时遇到了一些问题,所以我写了这个小片段来测试它:

NSMutableArray *output = [NSMutableArray array];
while (true) {
    NSMutableArray *input = [NSMutableArray array];
    for (int i = 0; i < 30; i++) {
        [input addObject:[NSNumber numberWithInt:i]];
    }
    [output addObject:[NSArray arrayWithArray:input]];
    NSLog(@"%@, %@", input, output);
}

我在NSLog 的行上设置了一个断点,并发现了一些有趣的东西。进入变量视图,我打开了输入,它正确地显示它被 NSNumber 对象填充。然后我打开了输出,它正确显示为包含一个数组。但是,在扩展此数组时,它显示为空。

然而,NSLog 显示了一个不同的故事。它正确地将多维输出数组显示为包含填充有 NSNumber 的数组。多维数组不能与调试器中的变量预览一起使用吗?这是问题的图片:

我对此完全感到困惑。其他人有这个问题吗?

【问题讨论】:

  • 我可以扩展每个子数组,但它被视为通用对象而不是数组(仅显示isa 指针)...
  • @jtbandes 是的,我有时也会遇到这种情况。不过,我不知道为什么。这没有多大意义,因为类型清楚地写着__NSArrayI *。是时候提交错误报告了!
  • 是的,我想这就是你问题的答案:)
  • @Jake King:请将雷达复制到openradar.me

标签: objective-c xcode debugging xcode4


【解决方案1】:

我已经向 Apple 提交了多个 Xcode 版本以及 Project Builder 时代的错误报告。它一直被报告为重复。所以很明显这是一个已知的错误,但优先级低或很难修复。

NSDictionaryNSSet 等其他容器类也存在同样的问题,因此它不是特定于 NSArray

我建议您也向http://bugreport.apple.com 提交报告,以便对问题施加更大的压力。同时依赖poNSLog 来满足大多数容器类的调试需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多