0

我有一个奇怪的问题!当日志输出显示它不是时,我有一个 IF 语句正在执行,就好像它的条件是真的一样。此外,这只发生在第一次调用单独的按钮之后,而不是之前。因此,例如,如果我在运行程序后直接单击此按钮,它将正常工作,只要我先单击另一个按钮,然后单击有问题的按钮,它就无法正确执行 IF 语句。

正如您可能从下面的代码中可以看出的那样,该按钮仅在条件为真时才会亮起。

- (IBAction)affectedFather:(id)sender
{
    NSLog(@"status of autoDomOn %@",autoDomOn? @"On":@"Off");
    NSLog(@"status of xLinkedDomOn %@",xLinkDomOn? @"On":@"Off");

    if(autoDomOn==YES||xLinkDomOn==YES)
    {
     NSLog(@"father selected!");
     [sender setImage:[UIImage imageNamed:@"buttonOptionsHighlight.png"]  forState:UIControlStateNormal];
      affectedMotherOut.imageView.image = [UIImage imageNamed:@"buttonOptions.png"];
      affectedParentsBoth.imageView.image = [UIImage imageNamed:@"buttonOptions.png"];
    }  
 NSLog(@"Do nothing!");
}

正如下面的日志输出所示,不应该满足 IF 语句并且按钮不应该变为亮起......但是确实如此。

2013-03-07 06:55:41.858 TCGA beta[6134:c07] status of xLinkedDomOn Off
2013-03-07 06:55:41.859 TCGA beta[6134:c07] Do nothing!

为了避免在这个问题上发送太多代码,我不会粘贴另一种方法,但我真的想了解是否有任何理由使上述 if 语句忽略条件?

我已经通过另一种方法来排除任何似乎没有的括号错误或内存位置错误。很高兴根据要求提供更多信息。

提前感谢您提供的任何建议!

亲切的问候,山姆

4

1 回答 1

0

正如 H2CO3 已经暗示的那样,根据您提供的信息,可能仍然满足条件(如果 autoDomOn 为 YES),因此您可能希望切换到 && 而不是 ||。

If that's not the case make sure that both vars are not somehow changed or even released and the memory overwritten in your other code - that way you'd access the right memory location but it'd be filled with stuff from your other code causing weird behavior.

于 2013-03-07T07:41:59.207 回答