【问题标题】:Expression in Xcode 4.3.2 Debug area not evaluatedXcode 4.3.2 调试区域中的表达式未评估
【发布时间】:2012-06-06 14:15:56
【问题描述】:

我做错了什么。我添加了一个表达式,我可以在 Debug 区域看到带有“E”符号的表达式,但是该表达式没有被计算,它的值没有显示在那里(它当时在范围内)。

当我直接使用调试器(lldb)时,它运行良好。

Xcode 4.3.2.

我该怎么办?

谢谢

【问题讨论】:

    标签: objective-c xcode debugging xcode4 xcode4.3


    【解决方案1】:

    您正在尝试评估布尔值并将其作为对象打印。

    您想使用print [self isEditing]print (BOOL)[self isEditing],这取决于调试器是否抱怨它不知道成员的类型。

    po 命令打印一个对象描述,而不是一个任意值,并且只应在右侧表达式的结果是一个对象时使用,例如po self

    在表达式编辑器中也会出现同样的问题。如果您使用表达式[self isEditing],调试器将无法理解它。但是,如果您使用(BOOL)[self isEditing],它将正确显示。

    【讨论】:

    • 我对命令行调试器的结果很满意。我希望看到在 GUI 中评估的表达式。如果我在 Xcode GUI 中添加表达式时键入“print [self isEditing]”,它仍然会准确显示这个字符串,它不会被评估。
    • 很抱歉我没有直接说明这一点,但这是同样的问题。您需要在表达式中使用“(BOOL) [self isEditing]”,而不是“[self isEditing]”。尝试添加这样的新表达式。我会更新我的答案。
    • 完美,谢谢 gaige!当我明确地说出表达式结果类型时,它对所有人都适用。 BOOLs, NSString *s, ints, ...
    【解决方案2】:

    尝试将表达式添加为self.isEditing,不带方括号。在这里工作

    【讨论】:

    • 我仍然必须指定(看起来像强制转换)Gaige 所写的表达式结果类型。它在 GUI 上运行良好。
    猜你喜欢
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 2015-12-11
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    相关资源
    最近更新 更多