gpt4 book ai didi

Objective-C:NULL、nil 和 @""之间有什么区别?

转载 作者:太空狗 更新时间:2023-10-30 03:11:02 25 4
gpt4 key购买 nike

正如标题所说,NULLnil@"" 有什么区别?

例如,如果我想检查字典中的字符串是否为空。

我应该使用哪个条件?

if ([dictionary objectForKey:@"aString"] == nil)

if [[dictionary objectForKey:@"aString"] isEqualToString:@""]

if ([dictionary objectForKey:@"aString"] == NULL)

哪个是对的?

最佳答案

nil 是 NULL 对 objective-c 对象的模拟。实际上它们是一样的:

 //MacTypes.h
#define nil NULL

所以

if ([dictionary valueForKey:@"aString"]==nil)
if ([dictionary valueForKey:@"aString"]==NULL)

两者都检查特定键是否存在于字典中,尽管第一行更正确,因为它检查 objective-c 类型。

关于:

if ([[dictionary valueForKey:@"aString"] isEqualToString:@""])

这一行检查字典中是否有带有“aString”键的条目,并将该条目与空字符串进行比较。结果将是以下之一:

  • 如果您的 key 没有这样的条目则为 false
  • 如果您的 key 有条目且该条目为空字符串,则为真
  • 如果您的 key 对象存在并且不响应-isEqualToString: 消息可能会崩溃

因此,根据您的需要,您必须使用第一行,或者如果您需要结合检查条目是否存在且它不是空字符串,那么您需要 2 个条件:

if ([dictionary valueForKey:@"aString"]==nil ||
[[dictionary valueForKey:@"aString"] isEqualToString:@""])

关于Objective-C:NULL、nil 和 @""之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4283690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com