[[NSNull null] isEqual:[NSNull null]] == 是吗?
测试 id 是否为 NSNull 的正确方法是什么。同样,如果检查两个集合是否相等并且它们都包含 NSNull,它们是否仍被视为相等?
[[NSNull null] isEqual:[NSNull null]] == 是吗?
测试 id 是否为 NSNull 的正确方法是什么。同样,如果检查两个集合是否相等并且它们都包含 NSNull,它们是否仍被视为相等?
假设您的意思是:
[[NSNull null] isEqual:NSNull]
不,NSNull
是一个类,而不是一个对象。您无法将其与 进行有意义的比较[NSNull null]
。但是,您总是会从[NSNull null]
中得到相同的对象 - 它是一个单例。从文档中:
+ (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