(null)vs <null>之间的区别是什么?</null>

时间:2012-07-02 03:49:53

标签: objective-c crash nsstring null

我在我的应用中遇到随机崩溃,直到我将其缩小到特定方法。在该方法中,我期望NSString作为参数。这个NSString有时可能是零,在这种情况下,方法结束并且不会造成任何伤害。

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

  1. 实际NSString的内容
  2. (空)
  3. &LT;空&GT;
  4. 前两个是我的方法预期和处理。第三个,&lt; null&gt; ,使用-[NSNull length]: unrecognized selector sent to instance 0x1b2ace8崩溃了我的应用。

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

1 个答案:

答案 0 :(得分:5)

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

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

这两个描述字符串容易混淆,有人可能会说NSNull应该有一个针对它的错误,以使其更加清晰。