Objective-C:如果一个对象属于一个类,这是否意味着该对象也不是 nil 或 null?



下面的代码是我之前在我的应用程序中使用的代码。

以前:

  if ([dic objectForKey:@"text"] isKindOfClass:[NSString class]] && [dic objectForKey:@"text"] != nil && [dic objectForKey:@"text"] != [NSNull Null]) {
       NSString *text = [dic objectForKey:@"text"];
    }

我已将代码更改为以下内容。

后:

    if ([dic objectForKey:@"text"] isKindOfClass:[NSString class]]) {
        NSString *text = [dic objectForKey:@"text"];
    }

我相信结果应该是一样的,但后者更整洁。为了安全起见,我问这个问题是为了确保我是正确的,而不是忽略任何事情。

你更简单的代码就可以了。

如果[dic objectForKey:@"text"] nil,则甚至不会调用对isKindOfClass的调用,并且实际上返回了false的结果。

如果[dic objectForKey:@"text"]不是nil,那么它一定是一个要true NSString,所以没有必要检查它是否NSNull

换句话说,如果[[dic objectForKey:@"text"] isKindOfClass:[NSString class]]true,那么你已经知道它没有nil,你已经知道它不是NSNull,所以不需要这些检查。

相关内容

  • 没有找到相关文章

最新更新