首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Objective-C中测试nil -- if(x != nil) vs if(x)

在Objective-C中测试nil -- if(x != nil) vs if(x)
EN

Stack Overflow用户
提问于 2011-05-30 22:47:19
回答 4查看 40.7K关注 0票数 73

我在网上找到的大多数例子都是这样写的:

代码语言:javascript
复制
if(x != nil)
    // ...

这有什么问题吗?

代码语言:javascript
复制
if(x)
    // ...

我在一个简单的程序中尝试了这两种方法,但找不到任何区别。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-30 22:51:50

在Objective-C中,nil被定义为一个名为__DARWIN_NULL的值,在if语句中,该值本质上为0false。因此,写if (x == nil)等同于写if (!x),写if (x != nil)等同于if (x) (因为与false相比会产生一个否定,而与true相比会保持条件不变)。

您可以用任何一种方式编写代码,这实际上取决于您认为哪种方式更具可读性。我发现if (x)更有意义,但这取决于您的风格。

这就像是比较if (someCondition == true)if (someCondition)

这完全取决于你,以及谁将阅读代码。

编辑: Yuji正确地提到,由于Objective-C是C的超集,因此任何求值为0以外的条件都被认为是真的,因此,如果上面示例中的someCondition求值为-1的整数值,则将其与true进行比较将得到false,并且if语句将不会被求值。一些需要注意的事情。

票数 127
EN

Stack Overflow用户

发布于 2011-05-30 22:52:46

两者都有

代码语言:javascript
复制
if (x != nil)

代码语言:javascript
复制
if ( x )

都是等效的,所以选择您认为能使您的代码对您(以及其他阅读和支持您的代码的人)更具可读性的的变体。

票数 8
EN

Stack Overflow用户

发布于 2015-03-29 04:31:39

两者都是一样的,这是一个风格问题,归根结底是你是否喜欢:

  1. if (某物){ ... }

对比

  • if (something != nothing) { ... }

我总是发现#1更清晰,但#2在文档中被广泛使用,因此该领域因此最好既了解这两种形式,并适应项目使用的内容,并在风格上保持一致。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6177719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档