NSNull是否等于NSNull

时间:2013-08-30 21:39:54

标签: objective-c nsnull

[[NSNull null] isEqual:[NSNull null]] == YES?

测试id是否为NSNull的正确方法是什么。同样,如果检查两个集合是否相等并且它们都包含NSNull,它们仍然被认为是相等的吗?

1 个答案:

答案 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