2013-03-07 97 views
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語句,如上面的一個會忽略條件?

我已經通過其他方法來排除任何括號錯誤或內存位置錯誤,似乎沒有。很高興根據要求提供更多信息。

非常感謝您提供任何建議!

親切的問候, 山姆

+0

您是不是指'&&而不是'||'? – 2013-03-07 07:10:22

+0

是您的標籤autoDomOn&xLinkDomOn BOOL類型? – Ganapathy 2013-03-07 07:10:39

+0

感謝您的回覆,||是正確的,因爲任何一個語句都可以爲TRUE。 autoDomOn和xLinkDomOn都是'bool' – Rojan501 2013-03-07 07:26:19

回答

0

由於H2CO3已經暗示,從你提供可能仍然必須滿足的條件(如果autoDomOn是YES),所以你可能要切換到& &,而不是信息|| 。

如果不是這種情況,請確保兩個變量不會被改變,甚至不會被釋放,並且其他代碼中的內存被覆蓋 - 這樣您就可以訪問正確的內存位置,但它會充滿您的內容其他代碼導致怪異的行爲。

+0

道歉,不包括第一個條件,這是一個複製和粘貼錯誤,以及絕對不符合條件... 我已設法通過添加一個else語句來確保該按鈕被設置爲關閉。 'code' else 'code' { 'code' NSLog(@「Do nothing!」); 'code' [sender setImage:[UIImage imageNamed:@「buttonOptions.png」]'code' forState:UIControlStateNormal]; '代碼'} 謝謝你的建議Beegz,我認爲一定有什麼奇怪的內存分配正在進行,但我還找不到它。 – Rojan501 2013-03-07 09:07:32