目标C-iPhone:使用nil进行比较

目标C-iPhone:使用nil进行比较,iphone,objective-c,nimbus,Iphone,Objective C,Nimbus,我在Nimbus中看到一些代码如下所示: if (nil == someObject) 但我通常打字: if (someObject == nil) 这些说法有什么不同吗?没有 (额外的废话废话废话这么少的帖子规则。它们有用吗?没有 (额外的废话废话废话,用于最低限度的帖子规则。它们有用吗?它们在功能上是一样的,只是编码风格的问题 在过去,如果您遗漏了等号,编译器不会警告您 if (someObject = nil) 可能不会做你想做的事。但如果你把它们颠倒过来: if (nil = s

我在Nimbus中看到一些代码如下所示:

if (nil == someObject)
但我通常打字:

if (someObject == nil)
这些说法有什么不同吗?

没有

(额外的废话废话废话这么少的帖子规则。它们有用吗?

没有


(额外的废话废话废话,用于最低限度的帖子规则。它们有用吗?

它们在功能上是一样的,只是编码风格的问题

在过去,如果您遗漏了等号,编译器不会警告您

if (someObject = nil) 
可能不会做你想做的事。但如果你把它们颠倒过来:

if (nil = someObject)  
然后编译器会抱怨


现在,这可能没有什么区别。

它们在功能上是一样的,只是编码风格的问题

在过去,如果您遗漏了等号,编译器不会警告您

if (someObject = nil) 
可能不会做你想做的事。但如果你把它们颠倒过来:

if (nil = someObject)  
然后编译器会抱怨


现在它可能没有什么区别。

没有。但下面的代码更易于阅读

左侧:表达式“正在被询问”,其值为 更多的在变化中

右侧:与之比较的表达式, 其值更为恒定


没有。但下面的代码更易于阅读

左侧:表达式“正在被询问”,其值为 更多的在变化中

右侧:与之比较的表达式, 其值更为恒定


从技术上讲,不是。前者,Nimbus,正在使用人们亲切地称之为的东西

游戏的名字在这里很简单。看,问题在于:

if (someObject = nil) // SETS someObject to nil
是完全有效的,距离
==nil
只有一个字符,很容易漏掉。但是,如果您尝试这样做:

if (nil = someObject)
您的编译器将崩溃,从而阻止该问题

就个人而言,我讨厌尤达条件句,因为我觉得它们很难读懂。这确实意味着对我的代码要格外小心,但嘿,我更适合,对吗?这一切都归结于这里的风格,所以无论什么让你更舒适,都去追求

哦,如果您使用的是Xcode,这几乎是一个没有实际意义的问题。如果您签出,您将看到Xcode现在警告您,如果您尝试在
If
中执行赋值,而没有额外的参数。就是

if (someObject = nil) // throws a warning, whereas
if ((someObject = nil)) // does not

使这个问题更难被忽略。

从技术上讲,不是。前者,即Nimbus,使用的是人们亲切地称之为的东西

游戏的名字在这里很简单。看,问题在于:

if (someObject = nil) // SETS someObject to nil
是完全有效的,距离
==nil
只有一个字符,很容易漏掉。但是,如果您尝试这样做:

if (nil = someObject)
您的编译器将崩溃,从而阻止该问题

就个人而言,我讨厌尤达条件句,因为我觉得它们很难读懂。这确实意味着对我的代码要格外小心,但嘿,我更适合,对吗?这一切都归结于这里的风格,所以无论什么让你更舒适,都去追求

哦,如果您使用的是Xcode,这几乎是一个没有实际意义的问题。如果您签出,您将看到Xcode现在警告您,如果您尝试在
If
中执行赋值,而没有额外的参数。就是

if (someObject = nil) // throws a warning, whereas
if ((someObject = nil)) // does not

使问题更难被忽略。

现在唯一的区别是第二种形式更具可读性(或者可能是主观的,只有我喜欢)。

现在唯一的区别是第二种形式更具可读性(或者可能是主观的,只有我喜欢)。

为什么不自己测试一下呢<代码>如果(nil==someObject&&someObject==nil)NSLog(@“woohoo!”)为什么不自己测试一下呢<代码>如果(nil==someObject&&someObject==nil)NSLog(@“woohoo!”)