Objective c 询问UIButton值时,为什么XCode调试器输出与我期望的不匹配?

Objective c 询问UIButton值时,为什么XCode调试器输出与我期望的不匹配?,objective-c,xcode,debugging,Objective C,Xcode,Debugging,此屏幕截图解释了这一切: 屏幕截图显示调试器报告按钮类型为2,但控制台显示按钮类型为0。调试器和控制台中会显示相同的变量。知道这种不匹配是怎么发生的吗 (gdb) po ((UIButton *)control).buttonType 没有名为buttonType的成员 应要求: NSLog(@"################ CALL OUT ACCESSORY TAPPED: set pinColor to RED in call out accessory tapped");

此屏幕截图解释了这一切:

屏幕截图显示调试器报告按钮类型为2,但控制台显示按钮类型为0。调试器和控制台中会显示相同的变量。知道这种不匹配是怎么发生的吗

(gdb) po ((UIButton *)control).buttonType
没有名为buttonType的成员

应要求:

    NSLog(@"################ CALL OUT ACCESSORY TAPPED: set pinColor to RED in call out accessory tapped");
    NSLog(@"################ CALL OUT ACCESSORY TAPPED: UIButtonTypeDetailDisclosure = %d",UIButtonTypeDetailDisclosure);
    NSLog(@"################ CALL OUT ACCESSORY TAPPED: control button type = %d", ((UIButton *)control).buttonType);

    if (((UIButton *)control).buttonType == 2) {
        NSLog(@" ############# CALL OUT ACCESSORY TAPPED: in buttonType = disclosure");
        leftCallOutButton.available = YES;
    }
if语句的计算结果为false!!试图理解为什么buttonType被报告为2(以及事实是用类型2创建的)

应迈克的要求:

(gdb) p (int) [((UIButton *)control) buttonType]
$1 = 0
2009-12-31 14:04:26.821 iParkNow![4432:207] ################ CALL OUT ACCESSORY TAPPED: control button type = 0
(gdb) p (int) [((UIButton *)control) buttonType]

好的,这更有意义。现在的问题是为什么buttonType从2更改为0?它是用buttonType 2创建的,但不知何故更改为0。任何想法???

\u buttonFlags是一个私有实例结构。你不应该为此担心。唯一能“保证”按预期工作的是公共API—实现细节可能会发生更改

(作为旁注,以u开头的变量通常是私有实例变量)

在您的情况下,请尝试
p(int)[((UIButton*)控件)buttonType]


还可以考虑创建断点操作,以便在设置的断点处记录所需的任何内容。有关详细信息,请参阅。

好的,那么如何在调试器中检查buttonType的值?@Mike,请在我的问题中输入print object的结果。无法解析该变量。@ennuikiller:您能从输出“UIButtonTypeDetailDisclosure=2”的调用中,通过输出“control button type=0”的调用(包括这两行)向我们提供代码吗?这可能有点帮助。@John,按照你的要求发布。@ennuikiller:你试过运行我修改过的命令吗?你能公布结果吗?@ennuikiller,我想你是指我。命令是
p(int)[((UIButton*)control)buttonType]
@ennuikiller:谢谢。很有趣,起初我以为我发现了,后来我意识到了我的错误。我发现有趣的是,
po((UIButton*)控件).buttonType
在(在断点处)您已经执行了完全相同的代码行时,没有打印出这样的成员。采购订单控制怎么样?诚然,这将是许多无关的数据,但它可能会提供更多的见解。