这种“如果”是什么意思?

时间:2011-05-28 13:55:54

标签: objective-c xcode cocoa

我一直在阅读一些关于可可的电子书,所以我可以学到更多,但我没有那么清楚这种类型的“if”是什么意思:

if(!something)
if(something)

我认为:

if (something !=nil)

意味着如果某些东西不存在,对吧?

谢谢:)

3 个答案:

答案 0 :(得分:8)

在C中,所有不相等的NULL0都被视为true

因此

if (!something)

相同
if (!(something != nil))

因此与

相同
if (something == nil)

如果是Objective-C对象(因为nil基本上是NULL)。

所以if (something)基本上是if (something != nil)的简写 if (!something)基本上是if (something == nil)的简写。

对于非Objective-C指针,您只需将nil替换为NULL即可。 (nil或多或少只是语法糖。)

您也可以使用它来检查整数是否不等于0
因此,条件if ([myArray count])true,除非myArray为空。

答案 1 :(得分:0)

假设某些东西是指向NSObject的指针。

if(something)

如果某些内容是非零指针

,则返回YES
if(!something)

如果某些内容为零,则返回YES。在这种情况下,因为something为零,而!(非运算符)将此反转为真,

if(something)if(something != nil)相同。但我认识的大多数程序员都认为这是一个重言式,而不是更短的表达。

虽然我在这里 - 你可能会看到这写为if(nil != something)。这样做的原因是,如果您不小心写=而不是!=,这会引发错误,因为您无法将值设置为nil,但如果是另一种方式而且您错误写了条件,它会将某些东西的值设置为零,这可能不是你想要做的。

答案 2 :(得分:0)

这是大多数基于C语言的一般语法。你需要意识到的是if语句检查parantheses中的表达式是false(零)还是true(1或非零)。所以,当你说“if(something)”时,你基本上是在询问是否检查它是:1。真或假(对于布尔表达式); 2.零或非零(对于算术表达式); 3.空或有效地址(用于指针,字符串等)。

现在你需要记住“!”运算符用于否定表达式,即按位将结果中的每个“0”位改为“1”,反之亦然。所以,基本上你要检查结果的否定是真还是非零。

简而言之,当您希望代码片段在“某事物”为真或非零时执行时,您可以使用“if(something)”。如果希望在“某事物”为假或为零时执行代码片段,则使用“if(!something)”。