这是什么(NSNull*)控制器== [NSNull null]应该做什么?为什么不只是控制器==零?

Tha*_*nks 11 iphone cocoa-touch uikit

在Apple的例子中,我看到了这个:

myController *controller = [viewControllers objectAtIndex:page];
if ((NSNull *)controller == [NSNull null]) {
    controller = [[myController alloc] initWithPageNumber:page];
    [viewControllers replaceObjectAtIndex:page withObject:controller];
    [controller release];
}
Run Code Online (Sandbox Code Playgroud)

我对这一行非常感兴趣:

if ((NSNull *)controller == [NSNull null]) {
Run Code Online (Sandbox Code Playgroud)

如果我愿意这样做,我会检查是否为零.为什么他们这样做太复杂了?那到底是做什么的?对我来说,看起来他们正在将控制器对象转换为NSNull,然后检查它是否与NSNull中的null相同.

AFAIK nil表示"无对象",null表示"无".请帮我看清楚图片吧!

Mar*_*ote 12

大多数容器不允许将'nil'对象插入其中.如果您确实想在容器中插入空值,则可以使用NSNull实例(NSNull是单例).

在您的特定示例中,控制器是从数组中获取的.然后,确保对象不是NSNull实例是一种好习惯.