Objective c 什么';s(空)与<;空>;?

Objective c 什么';s(空)与<;空>;?,objective-c,crash,nsstring,null,Objective C,Crash,Nsstring,Null,我的应用程序中出现了随机崩溃,直到我将其缩小到一个特定的方法。在该方法中,我期望一个NSString作为参数。此NSString有时可能为零,在这种情况下,方法结束,不会造成任何伤害 当我通过NSLog(@“%@”,myString)运行我的方法参数时,我发现我得到了其中一个: 实际字符串的内容 (空) 前两个是预期的,并由我的方法处理。第三个,使用-[NSNull length]:发送到实例0x1b2ace8的无法识别的选择器使我的应用程序崩溃 我通过检查nil或iskindof class

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

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

  • 实际字符串的内容
  • (空)
  • 前两个是预期的,并由我的方法处理。第三个,使用
    -[NSNull length]:发送到实例0x1b2ace8的无法识别的选择器使我的应用程序崩溃

    我通过检查
    nil
    iskindof class
    找到了解决问题的方法,但我的问题是空值和?之间的区别是什么

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

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

    这两个描述字符串令人困惑地相似,有人可能会认为,
    NSNull
    应该有一个针对它的bug,以便更清楚地说明这一点。
    (null)
    是当使用带有
    nil
    值的格式说明符
    %@
    时,
    NSLog()
    打印的字符串
    是将
    说明
    发送到
    NSNull
    单例(可通过
    [NSNull null]
    访问)的结果

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


    这两个描述字符串令人困惑地相似,有人可能会认为
    NSNull
    应该有一个针对它的bug,以使这一点更加清楚。

    可能重复@Dashwuff:注意,这里的问题和答案都没有涉及这两个描述字符串,
    (null)
    。我已经编辑了已接受的答案,其中包含了关于这两个值如何字符串化的注释。:)@Dashwuff的可能重复:请注意,这里的问题和答案都没有涉及两个描述字符串,
    (null)
    。我已经编辑了接受的答案,以包括关于这两个值如何字符串化的注释。:)啊,我明白了。谢谢你把它清理干净!我必须在我的应用程序中查找NSNull的来源。在我的一生中,我在过去的几个小时里一直在尝试,但都无济于事。解析JSON似乎是导致这个问题的最常见的任务——用一些缺失的数据构建Cocoa集合需要使用
    NSNull
    。你再一次说对了。我在一本字典中发现了来自远程JSON对象的罪魁祸首。谢谢啊,我明白了。谢谢你把它清理干净!我必须在我的应用程序中查找NSNull的来源。在我的一生中,我在过去的几个小时里一直在尝试,但都无济于事。解析JSON似乎是导致这个问题的最常见的任务——用一些缺失的数据构建Cocoa集合需要使用
    NSNull
    。你再一次说对了。我在一本字典中发现了来自远程JSON对象的罪魁祸首。谢谢