Tha*_*nks 46 null cocoa cocoa-touch objective-c nsnull
这是我看到的上下文:
NSMutableArray *controllers = [[NSMutableArray alloc] init];
for (unsigned i = 0; i < kNumberOfPages; i++) {
    [controllers addObject:[NSNull null]];
}
为什么不在那个地方零?
集合类喜欢NSArray和NSDictionary不能包含nil值.NSNULL是专门为其创建的占位符nil.它可以放入集合类中,只占用空间.
NSNull定义一个单例对象,这意味着只有一个NSNull实例(你使用它创建[NSNull null]),但它可以在你想要的任意数量的地方使用.
我们都同意[NSNull null]作为需要对象的占位符很有用,如上所述.但除非它明确用于你的对象的赋值,否则它不应该用于比较,这是我过去犯的错误.
id a;
NSLog(@"Case 1");
if (a == nil) NSLog(@"a == nil");
if (a == Nil) NSLog(@"a == Nil");
if ([a isEqual:[NSNull null]]) NSLog(@"a isEqual:[NSNull null]");
NSLog(@"Case 2");
a = [NSNull null];
if (a == nil) NSLog(@"a == nil");
if (a == Nil) NSLog(@"a == Nil");
if ([a isEqual:[NSNull null]]) NSLog(@"a isEqual:[NSNull null]");
输出:
2014-01-31 10:57:11.179 MCDocsApp [13266:a0b]案例1
2014-01-31 10:57:11.179 MCDocsApp [13266:a0b] a == nil
2014-01-31 10:57:11.179 MCDocsApp [13266:a0b] a ==无
2014-01-31 10:57:11.180 MCDocsApp [13266:a0b]案例2
2014-01-31 10:57:11.180 MCDocsApp [13266:a0b] a isEqual:[NSNull null]