【问题标题】:Why is [NSNumber numberWithBool:YES] reported as null by debugger?为什么调试器将 [NSNumber numberWithBool:YES] 报告为 null?
【发布时间】:2014-11-19 02:59:11
【问题描述】:

在 Xcode 4.6.3 中运行这两行代码后,xy 在调试器的变量视图窗格中都被标记为(null) 并带有灰色文本。

  NSNumber* y = [NSNumber numberWithBool:YES];
  NSNumber* z = [NSNumber numberWithBool:NO];

同上:

  NSNumber* literalYes = @YES;
  NSNumber* literalNo = @NO;

然而,如果我在变量视图窗格中右键单击这些项目,并从上下文菜单中选择Print Description,我确实看到了正确的10 值。

为什么调试器的变量视图窗格将这些对象报告为null,而实际上它们不是?

【问题讨论】:

  • 不要相信变量视图。最好从调试控制台打印变量的值/描述,或者在变量视图中右键单击它并从那里打印。
  • 在这段代码之后设置断点并在调试器控制台视图中输入“po y”+enter(这是打印对象命令)并确保我相信它实际上不能为空
  • 这可能对你有帮助:stackoverflow.com/questions/753153/…
  • 如果您在发布模式下运行,您将无法在左侧窗格中看到变量值。

标签: objective-c xcode boolean nsnumber


【解决方案1】:

Xcode 4 调试器谎言。 (见Herrman Klecker上面的评论)

忽略灰色文本“(null)”。

查看这个问题Xcode debugging: View value of NSNumber?,了解有关显示实际值的提示。

一种方式…… 在您的代码之后设置断点,单击进入调试器控制台视图,然后通过键入po y 使用打印对象命令。按 Return/Enter 执行表达式并在控制台中查看结果值。命令ppo 在较旧的gdb 和较新的lldb 调试器技术中均有效。有关示例,请参阅Debugging tips for Objective-C programming

另一种方式…… 打开 Debugger 视图并在 Summary 列中输入如下内容: {(int)[$VAR intValue]}

【讨论】:

    猜你喜欢
    • 2016-07-26
    • 2015-03-23
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多