在Objective-C中testingnil if(x!= nil)vs if(x)
我在网上find的大多数例子都写到:
if(x != nil) // ...
这有什么问题吗?
if(x) // ...
我尝试了一个简单的程序,并没有发现任何区别。
在Objective-C中, nil
被定义为一个名为__DARWIN_NULL
的值,在if语句中本质上它的计算结果为0
或false
。 因此,写if (x == nil)
和写if (!x)
和写if (x != nil)
等于if (x)
(因为和false
相比,产生一个否定,并且与true
条件相同)。
你可以用任何方式编写你的代码,这实际上取决于你认为哪个更具可读性。 我发现if (x)
更有意义,但取决于你的风格。
这就像比较if (someCondition == true)
和if (someCondition)
。
这一切都取决于你,谁将读取代码。
编辑:由于Yuji正确地提到,由于Objective-C是C的超集,任何评估someCondition
0值的条件都被认为是真实的,因此,如果someCondition
的例子中的someCondition
值是一个整数值,比如说,-1,将其与true
比较会导致false
,并且if语句不会被评估。 有些事情要注意。
都
if (x != nil)
和
if ( x )
是相同的,所以select你认为使你的代码更易于读取的变体(以及其他读取和支持你的代码的人)
两者是相同的,这是一个风格问题,它归结为是否你喜欢:
-
如果(某事){…}
与
- 如果(某事!=无){…}
我总是发现#1更清楚,但是#2被广泛用于文档,因此在这个领域,所以最好是既知道这两种forms,适应一个项目的使用和风格一致。
if([yourNullObject isKindOfClass:[NSNull class]]){ //if it is null }else{ //if it is not null }