[[NSNull null] isEqual:[NSNull null]] == YES?
测试id是否为NSNull的正确方法是什么。同样,如果检查两个集合是否相等并且它们都包含NSNull,它们仍然被认为是相等的吗?
答案 0 :(得分:6)
假设你的意思是:
[[NSNull null] isEqual:NSNull]
不,NSNull
是一个类,而不是一个对象。您无法将其与[NSNull null]
进行有意义的比较。你总是会从[NSNull null]
获得相同的对象,但它是一个单身人士。来自documentation:
+ (NSNull *)null
返回值
NSNull的单例实例。
这意味着这个表达式:
[NSNull null] == [NSNull null]
始终返回1
。同样地:
[[NSNull null] isEqual:[NSNull null]]
将返回YES
。
示例:
#include <Foundation/Foundation.h>
int main(void)
{
@autoreleasepool
{
NSLog(@"%d", [[NSNull null] isEqual:[NSNull null]]);
NSLog(@"%d", [NSNull null] == [NSNull null]);
}
return 0;
}
建筑与建筑运行:
$ clang example.m -o example -framework Foundation
$ ./example
2013-08-30 14:56:21.200 example[27901:707] 1
2013-08-30 14:56:21.201 example[27901:707] 1