在objective-c中,!variable
的最终结果与variable==nil
相同我还认为我在某处读到iVars被初始化为“nil”(即o)但遗憾的是我看起来不可能找到我现在发现的地方。如果我是正确的,这是初始化为nil部分声明一个iVar还是与@property之类的东西相关联?
即。做这些评估相同......
if(!myObject) ...
和
if(myObject == nil) ...
干杯加里。
编辑:希望更清晰。
答案 0 :(得分:3)
你的问题主题和问题正在提出不同的问题,所以......
回答问题主题:不,!
和nil
完全不同。 !
是一个运算符,它返回其操作数的逻辑否定(即!0
返回1
和!
,其他任何内容返回0),而nil
是0的宏。
回答问题本身:是的,!foo
和foo == nil
为对象变量提供相同的结果。是的,实例变量初始化为0.静态变量和全局变量也是如此。
答案 1 :(得分:1)
!
是一个C逻辑运算符,表示不(例如&&&意味着和,||表示或 )。
nil
是表达单元化对象指针的方法。
应用于指针时,只要指针为NULL
或nil
,表达式的值就为TRUE。
最后,if(!myObject)
和if(myObject==nil)
具有相同的行为。
答案 2 :(得分:1)
在objective-c中,!
是一个布尔运算符,返回布尔值或表达式结果的反面。在下面的例子中,myObj实际上将它的指针值评估为布尔值,零或非零。由于myObj是一个非零指针,因此计算结果为true。 !myObj将返回相反的情况,在这种情况下它将返回false。
id myObj = nil;
int x = 0;
if (myObj)
x++;