Nam*_*ame 0 objective-c nsnull
是[[NSNull null] isEqual:[NSNull null]] == YES?
测试id是否为NSNull的正确方法是什么.同样,如果检查两个集合是否相等并且它们都包含NSNull,它们是否仍然被认为是相等的?
假设你的意思是:
[[NSNull null] isEqual:NSNull]
Run Code Online (Sandbox Code Playgroud)
不,NSNull是一个阶级,而不是一个对象.你无法将其与之进行有意义的比较[NSNull null].[NSNull null]尽管如此,你将永远得到同一个物体- 它是一个单身人士.从文档:
+ (NSNull *)null
返回值
NSNull的单例实例.
这意味着这个表达式:
[NSNull null] == [NSNull null]
Run Code Online (Sandbox Code Playgroud)
总是回来1.同样:
[[NSNull null] isEqual:[NSNull null]]
Run Code Online (Sandbox Code Playgroud)
会回来YES.
例:
#include <Foundation/Foundation.h>
int main(void)
{
@autoreleasepool
{
NSLog(@"%d", [[NSNull null] isEqual:[NSNull null]]);
NSLog(@"%d", [NSNull null] == [NSNull null]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
建设和运营:
$ 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
400 次 |
| 最近记录: |