[NSNull null等于:NSNull null] ==是吗?
测试id是否为NSNull的正确方法是什么。同样,如果检查两个集合是否相等,并且它们都包含NSNulls,那么它们是否仍然被视为相等?
发布于 2013-08-30 21:43:15
假设你是指:
[[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] 1https://stackoverflow.com/questions/18541842
复制相似问题