可能是重复问题:
Objective-C中的! vs == nil
在Objective C中,以下两个条件语句有什么区别吗?
NSObject *obj;
if(!obj)
{
...
}
和:
NSObject *obj;
if(obj == nil)
{
...
}
谢谢!只是好奇,觉得了解这个是件好事。
可能是重复问题:
Objective-C中的! vs == nil
在Objective C中,以下两个条件语句有什么区别吗?
NSObject *obj;
if(!obj)
{
...
}
和:
NSObject *obj;
if(obj == nil)
{
...
}
谢谢!只是好奇,觉得了解这个是件好事。
这两种形式之间没有区别。
!obj
在 obj=NULL
或 obj=@""
或空数组等情况下也是有效的。你懂的。
也就是说,!obj
更全面,因为你似乎在使用 NSObject
而不是任何特定的对象类型。
obj
为@""
或空数组时,!obj
为不真("valid"?)。此外,使用nil
来表示空对象引用是传统的方式,而不是NULL
。 - Marcelo Cantosobj=@""
或者是一个空的 NSArray
对象时,!obj
是 不 成立的。 @""
是指向长度为 0
的 NSString
对象的指针。这个指针在编译时就被分配了,因此它永远不会为 NULL
(或 nil
)。 - user142019