在苹果的例子中我看到了这个:
myController *controller = [viewControllers objectAtIndex:page];
if ((NSNull *)controller == [NSNull null]) {
controller = [[myController alloc] initWithPageNumber:page];
[viewControllers replaceObjectAtIndex:page withObject:controller];
[controller release];
}
我对这一行很感兴趣:
if ((NSNull *)controller == [NSNull null]) {
如果我这样做,我就会检查是否为零。他们为什么要做得这么复杂?那实际上是做什么的?对我来说,他们似乎将 Controller 对象转换为 NSNull,然后检查它是否与 NSNull 中的 null 相同。
据我所知。 nil 表示“没有对象”,null 表示“什么都没有”。请帮我在这里获得清晰的图片!
最佳答案
大多数容器不允许在其中插入“nil”对象。如果你确实想在容器中插入空值,可以使用 NSNull 实例(NSNull 是单例)。
在您的特定示例中, Controller 是从数组中获取的。确保该对象不是 NSNull 实例是一个很好的做法。
关于iphone - 这个 (NSNull*)controller == [NSNull null] 应该做什么?为什么不直接 Controller == nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/860599/