我在我的应用中遇到随机崩溃,直到我将其缩小到特定方法。在该方法中,我期望NSString
作为参数。这个NSString
有时可能是零,在这种情况下,方法结束并且不会造成任何伤害。
当我通过NSLog(@"%@", myString)
运行方法的参数时,我发现我得到了其中一个:
前两个是我的方法预期和处理。第三个,< null> ,使用-[NSNull length]: unrecognized selector sent to instance 0x1b2ace8
崩溃了我的应用。
我通过检查nil
或isKindOfClass
找到了解决问题的方法,但我的问题是(null)和< null>之间有什么区别?。
答案 0 :(得分:5)
(null)
是NSLog()
在您使用格式说明符%@
且nil
值时打印的字符串。 <null>
是将description
发送到NSNull
单例(您可以通过[NSNull null]
访问)的结果。
NSNull
在Cocoa集合(NSArray
和NSDictionary
)中用作“无对象”占位符,因为它们不能包含nil
。
这两个描述字符串容易混淆,有人可能会说NSNull
应该有一个针对它的错误,以使其更加清晰。