我实际上正在调试我的iOS应用程序:我想测试一个变量是否为null:
愚蠢的问题吧!
if (var !=nil) { doSomeWork ; }
因此,如果变量var等于nil并且我们想在调试器区域中打印此结果,我们将会有类似的结果:
2012-10-12 21:33:01.553申请名称[892:13d03](null)
这很酷,但实际上当我尝试在调试器区域中打印变量内容时,它一直显示:
2012-10-12 21:33:01.553应用程序名称[892:13d03]< null>
你能告诉我们这两种null之间的区别是什么,以及我如何测试第二种是否等于nil。
提前致谢
答案 0 :(得分:6)
第二个输出<null>
来自NSNull
单例。这是一个名为NSNull
的类,它有一个类方法+null
,每次都返回NSNull
的相同单例实例。这个类的主要目的是能够在nil
放置nil
的地方作为替代,例如在集合中。例如,当JSON包含NSNull
时,JSON库通常会返回null
。
您可以通过询问==
到[NSNull null]
(因为它是单身),或者可能是[obj isKindOfClass:[NSNull null]]
来测试。如果您愿意,可以使用[obj isEqual:[NSNull null]]
。如果您愿意,您甚至可以询问它是== kCFNull
,因为CFNull
和NSNull
是免费桥接的。无论你想要什么风格都取决于你。
答案 1 :(得分:0)
NSNull
它是类,nil
不是。因此,如果您要将nil
与某些内容进行比较,则应使用“==
”,如果NSNull
则为 - &gt; if ([var isEqual:[NSNull null]]) { ....}