如果语句执行没有满足条件

时间:2013-03-07 07:07:54

标签: objective-c if-statement

我有一个奇怪的问题!我有一个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语句会忽略条件?

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

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

亲切的问候, 萨姆

1 个答案:

答案 0 :(得分:0)

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

如果不是这种情况,请确保两个变量都没有以某种方式更改甚至被释放,并且在其他代码中覆盖了内存 - 这样您就可以访问正确的内存位置,但是它会被其他内容填充代码导致奇怪的行为。