是NULL和零等价?
其实我的问题是:
null
和nil
等价与否?
我有一个例子,但是当他们不相同时我很困惑。
NSNull *nullValue = [NSNull null];
NSArray *arrayWithNull = [NSArray arrayWithObject:nullValue];
NSLog(@"arrayWithNull: %@", arrayWithNull);
id aValue = [arrayWithNull objectAtIndex:0];
if (aValue == nil) {
NSLog(@"equals nil");
} else if (aValue == [NSNull null]) {
NSLog(@"equals NSNull instance");
if ([aValue isEqual:nil]) {
NSLog(@"isEqual:nil");
}
}
在上面的例子中,它表明null
和nil
都不相等,它显示“等于NSNull实例”
NSString *str=NULL;
id str1=nil;
if(str1 == str)
{
printf("n IS EQUAL........");
}
else
{
printf("n NOT EQUAL........");
}
在第二种情况下,它显示两者相等,并显示“IS EQUAL”。
任何人的帮助将不胜感激。
谢谢,
Monish。
没有找到相关结果
已邀请:
6 个回复
唤副埂侧壬
和
基本相同,
类似于
,而
更像是
。但两者都是整数值为零的指针。您可以发送消息至
而不会引发错误。 然而,
和
(或当然是
)是不同的东西。您只需使用
作为助手将
对象添加到
或其他容器类,因为您无法向它们添加
。所以相反,你使用
作为替代,你必须检查数组元素是否为
,而不是它是
(它永远不会等于
)。
蓄荣糖些
和
是100%可互换的。 从:
适用于C风格的内存指针。
适用于Objective-C对象。
适用于Objective-C课程。 每当您编写Objective-C代码时,请使用
无论何时编写C代码,请使用
但最终它们都被定义为相同的东西 - (void *)0,我认为 - 所以在实践中它并不重要。
吐兄
靛新比比催
对象发送消息可能会导致崩溃,而将任何消息发送到
很酷。例如,如果使用键路径来获取数组,如下所示:
然后,对于任何
为
的部门,你将拥有一个
对象。所以,这会导致崩溃:
每当
是
,因为你刚刚将一个未知的选择器(
)送到了
。 课程:在向其元素发送任何消息之前检查数组中的
对象。
锯康
和
不一样。它们都代表缺乏价值,你可能想要对它们进行相同的处理,但它们仍然不相同。
对象实例表示空值,例如,当您从具有空值的数据库中读取数据时。
值是空指针,即它不指向任何对象实例。 在你的第二个代码中,你没有任何
实例。包含空指针的
指针不是
实例,它仍然只是一个空指针。您正在将一个空指针与另一个指针进行比较,它们当然是相等的。
体悉
否则你会收到一条警告信息“不同指针类型的比较('type *'和'NSNull *')