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の場合)、||ではなく&&に切り替えることをお勧めします。

そうでない場合は、両方の変数が何らかの形で変更または解放されておらず、メモリが他のコードで上書きされていないことを確認してください-そうすれば、正しいメモリ位置にアクセスできますが、他のコードからのものでいっぱいになり、奇妙な原因になります行動。

于 2013-03-07T07:41:59.207 に答える