2010-06-29 38 views
0

我希望這個問題是一些可以自我解釋的問題。'如果'有條件的工作與NSLog但不是沒有? Objective-C

這工作,返回YES和NO:注意的NSLog()的

- (BOOL)dateTestCourse:(NSDictionary *)listing { 
    BOOL result = ([self exammpleTest] == 0) ? YES : NO; 
    if (result) { 
     NSLog(@"Passes Test"); 
     return YES; 
    } 
    NSLog(@"Failed Test"); 
    return NO; 

} 

但下面總是返回YES?唯一不同的是沒有NSLog();

- (BOOL)dateTestCourse:(NSDictionary *)listing { 
    BOOL result = ([self exammpleTest] == 0) ? YES : NO; 
    if (result) { 
     // NSLog(@"Passes Test"); 
     return YES; 

    } 
    // NSLog(@"Failed Test"); 
    return NO; 

} 

這與C有關嗎?我不知道?我可能期望它總是返回NO(如果我不應該違反條件),但肯定會返回YES。

我知道我應該返回上面的例子的結果,但我很想知道爲什麼。

+0

確定括號是完全按照你的產品代碼? – Eiko 2010-06-29 18:38:28

+0

你能告訴我們examspleTest方法嗎? – jessecurry 2010-06-29 18:52:51

+0

我很猶豫,因爲它很大,但是正確地返回BOOL。示例方法的語法是否會打破dateTestCourse方法的語法? (或者我正在做一些愚蠢的事情) – Ross 2010-06-29 19:00:26

回答

1

這兩個代碼塊應該運行相同。你可能在NSLog上做了一個查找/替換?這可能會導致其他地方的問題,用examspleTest(原文如此)方法說。

而且,在第二行的三元運算符是多餘的,考慮減少該行:

BOOL result = ([self exammpleTest] == 0);