试图理解一个简单的陈述

时间:2013-03-22 13:15:39

标签: ios objective-c cocoa-touch cocoa

#define IS_IPHONE5 (([[UIScreen mainScreen] bounds].size.height-568)?NO:YES)

我使用上面的方法检查用户是否使用的是iPhone 5,但我真的不明白它是如何工作的。

常识告诉我,如果用户屏幕边界是X - 568 = 0,则用户正在使用iPhone 5。 但是在上面的语句中,0将是NO BOOL,因此不理解它是如何返回YES。

4 个答案:

答案 0 :(得分:2)

(0 ? "yes" : "no")会产生"no"

(0 ? "no" : "yes")会产生"yes"

当布尔表达式为真时,?之后的表达式是结果。 :后面的表达式是布尔表达式为false时的结果。

答案 1 :(得分:2)

意思是:

if([[UIScreen mainScreen] bounds].size.height-568)
    return NO;
return YES;

IPHONE5身高为568,因此[[UIScreen mainScreen] bounds].size.height-568 = 00表示NO,其他人表示YES

答案 2 :(得分:1)

很简单,

你已经解决了逻辑,是的它会说Zero,在Zero它会返回 YES

因为编程ZERO意味着错误!所以False将返回“YES”

而非零意味着真!所以TRUE将返回“NO”

此处使用三元运算符,它将以上述方式工作。

答案 3 :(得分:0)

首先,这样的一些陈述:“isTrue?NO:YES”,这意味着,当“?”之前的语句真的是真的时,整个语句(isTrue?NO:YES)的值是“NO”,否则值为“YES”;这里,此语句的值([[UIScreen mainScreen] bounds] .size.height-568)可以是零或非零,所以当[[UIScreen mainScreen] bounds] .size.height时等于568,上述语句为零,零表示为假,因此返回“是”。