【发布时间】:2011-08-10 14:50:33
【问题描述】:
在Objective C中,以下两个条件句有区别吗?
NSObject *obj;
if(!obj)
{
...
}
还有:
NSObject *obj;
if(obj == nil)
{
...
}
谢谢!只是好奇,知道这是件好事。
【问题讨论】:
-
没有区别。这是 C 语言的行为。
标签: objective-c ios conditional null
在Objective C中,以下两个条件句有区别吗?
NSObject *obj;
if(!obj)
{
...
}
还有:
NSObject *obj;
if(obj == nil)
{
...
}
谢谢!只是好奇,知道这是件好事。
【问题讨论】:
标签: objective-c ios conditional null
这两种形式没有区别。
【讨论】:
!obj 在obj=NULL 或obj=@"" 或空数组等时也有效。你明白了。
即!obj 更全面,因为您似乎使用的是 NSObject 而不是任何特定的对象类型。
【讨论】:
obj 是@"" 或一个空数组时,!obj 是not true(“有效”?)。此外,nil 是表示空对象引用的传统方式,而不是 NULL。
!obj 在obj=@"" 和空的NSArray 对象时不为真。 @"" 是指向长度为0 的NSString 对象的指针。该指针永远不会是NULL(或nil),因为它是在编译时分配的。