【问题标题】:What's the difference between (null) vs <null>?(null) 与 <null> 有什么区别?
【发布时间】:2012-07-02 03:49:53
【问题描述】:

在我将其范围缩小到特定方法之前,我的应用程序中出现了随机崩溃。在该方法中,我期望 NSString 作为参数。这个NSString 有时可能为零,在这种情况下方法结束并且没有造成任何伤害。

当我通过NSLog(@"%@", myString) 运行我的方法参数时,我发现我得到了其中之一:

  1. 实际 NSString 的内容
  2. (空)

前两个是我的方法所期望和处理的。第三个,,使用 -[NSNull length]: unrecognized selector sent to instance 0x1b2ace8 使我的应用程序崩溃。

我通过检查nilisKindOfClass 找到了解决问题的方法,但我的问题是(null) 和 之间有什么区别?

【问题讨论】:

标签: objective-c crash nsstring null


【解决方案1】:

(null)NSLog() 在使用格式说明符 %@nil 值时打印的字符串。 &lt;null&gt; 是将description 发送到NSNull 单例(您可以通过[NSNull null] 访问)的结果。

NSNull 在 Cocoa 集合(NSArrayNSDictionary)中用作“无对象”占位符,因为它们不能包含 nil

这两个描述字符串令人困惑地相似,有人可能会争辩说 NSNull 应该有一个针对它的错误提交以使这一点更清楚。

【讨论】:

  • 啊,我明白了。感谢您清除它!然后我必须在我的应用程序中寻找那个 NSNull 的来源。在我的一生中,过去几个小时我一直在尝试,但无济于事。
  • 解析 JSON 似乎是导致此问题的最常见任务——构建带有一些缺失数据的 Cocoa 集合需要使用 NSNull
  • 你又是对的一次。我在来自远程 JSON 对象的字典中找到了罪魁祸首。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
  • 2016-12-23
  • 2017-04-02
  • 1970-01-01
相关资源
最近更新 更多