使用 != 了解返回 BOOL 的方法

Posted

技术标签:

【中文标题】使用 != 了解返回 BOOL 的方法【英文标题】:Understanding method returning BOOL by using != 【发布时间】:2011-08-25 23:04:45 【问题描述】:

这是一个关于视图控制器shouldAutoRotateToInterfaceOrientation 方法中的return 语句语法的相当基本的问题。

为了允许除倒置纵向模式之外的所有视图,我实现了以下代码块:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

    // Return YES for supported orientations
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);

return 语句到底在做什么?我知道它正在返回一个布尔变量,但是它如何确定是返回真还是假?这是 return 语句中的一种隐式 if 语句吗? IE。会:

-    (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

    // Return YES for supported orientations
    if (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown)
        return YES;

技术上是一样的,只是更明确地说明?

感谢您的澄清!

【问题讨论】:

【参考方案1】:

(something != something_else) 这样的比较结果是BOOL 值。如果比较结果为真,则表达式(....) 采用值YES(与TRUE 相同)。

这不是隐式转换,而是比较的工作方式。

【讨论】:

哦,哇,这很有道理,我以前从未见过这种语法,所以它让我头晕目眩。谢谢!

以上是关于使用 != 了解返回 BOOL 的方法的主要内容,如果未能解决你的问题,请参考以下文章

Bool 方法返回错误值

方法 BOOL 从内部块返回

BOOL 属性返回错误的 BOOL 结果

让 bool 方法返回其他整数

如何解决 bool 方法上的“并非所有代码路径都返回值”?

C & libconfig: config_lookup_bool 返回 CONFIG_FALSE