iphone - 这个 (NSNull*)controller == [NSNull null] 应该做什么?为什么不直接 Controller == nil?

标签 iphone cocoa-touch uikit

在苹果的例子中我看到了这个:

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/

相关文章:

objective-c - 无法获取 UIImageView 并使用自动布局填充父 UIView

ios - 什么时候应该使用 lineHeightMultiple 与 lineSpacing?

cocoa - NSOperation 传递给委托(delegate)时导致崩溃

ios - 如何在 NSUserDefaults 中保存 "custom class objects"的 NSMutableArray?

objective-c - UITableView 最后两个单元格中的信息与前两个单元格重复

ios - keyboardWillChangeFrame 没有按预期工作

iOS 应用程序 - 复杂的 UI 与复杂的数据分离

iphone - 如何在iPhone中单击按钮时打开网址

iphone - mobile safari 如何处理 pdf 以便提供搜索功能?

iphone - 带有 .PLIST 的详细 View 中的 UIPickerView