我一直在阅读一些关于可可的电子书,所以我可以学到更多,但我没有那么清楚这种类型的“if”是什么意思:
if(!something)
if(something)
我认为:
if (something !=nil)
意味着如果某些东西不存在,对吧?
谢谢:)
答案 0 :(得分:8)
在C中,所有不相等的NULL
或0
都被视为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)
如果某些内容是非零指针
,则返回YESif(!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)”。