2010-11-22 100 views
3

在objective-c中最后的结果是!variablevariable==nil一样也是我想我在某处读到iVars被初始化为“无”(即o),但是我很难过似乎找不到我现在发现它的地方。如果我正确的是这个初始化无声的一部分iVar或者是否链接到其他的东西像@property?做“!”和“无”给出相同的结果?

即做这些评估一样...

if(!myObject) ... 

if(myObject == nil) ... 

干杯加里。

编辑:希望更清晰。

回答

3

你的问题主题和问题,身体似乎会问不同的东西,所以......

要回答这个问题主题:没有,!nil不在都一样。 !是返回其操作数的逻辑否定(即!0回报1!与别的返回0),而nil是0

宏来回答这个问题本身就是一个运营商:是的,!foofoo == nil对对象变量给出相同的结果。是的,实例变量初始化为0.所以是静态变量和全局变量。

1

!是C逻辑运算符,这意味着不(如& &装置和||装置)。

nil是表达单位化对象指针的方式。

应用于指针,每当指针为NULLnil时,表达式的值为TRUE。

最后,if(!myObject)if(myObject==nil)具有相同的行为。

+1

对不起,我得到的是!myObject(给出TRUE或FALSE)和myObject == nil(给出TRUE或FALSE)? – fuzzygoat 2010-11-22 20:23:19

1

在objective-c中,!是一个布尔运算符,它返回布尔值或表达式结果的对立面。在下面的例子中,myObj真正将它的指针值作为布尔值,零值或非零值进行计算。由于myObj是一个非零指针,因此它的计算结果为true。 !myObj将返回相反的结果,在这种情况下它将返回false。

id myObj = nil; 
int x = 0; 
if (myObj) 
    x++; 
+0

这不是因为“myObj是一个有效的指针”,它的计算结果为true。这是因为它是一个非零指针。 – warrenm 2010-11-22 20:42:56

+0

这就是我的意思,但你是正确的,我没有输入我的意思。我会更新我的答案,谢谢。 – slycrel 2010-11-22 20:49:52

相关问题