一种零变量IOS

时间:2012-10-12 19:49:32

标签: ios debugging null

我实际上正在调试我的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。

提前致谢

2 个答案:

答案 0 :(得分:6)

第二个输出<null>来自NSNull单例。这是一个名为NSNull的类,它有一个类方法+null,每次都返回NSNull的相同单例实例。这个类的主要目的是能够在nil放置nil的地方作为替代,例如在集合中。例如,当JSON包含NSNull时,JSON库通常会返回null

您可以通过询问==[NSNull null](因为它是单身),或者可能是[obj isKindOfClass:[NSNull null]]来测试。如果您愿意,可以使用[obj isEqual:[NSNull null]]。如果您愿意,您甚至可以询问它是== kCFNull,因为CFNullNSNull是免费桥接的。无论你想要什么风格都取决于你。

答案 1 :(得分:0)

NSNull它是类,nil不是。因此,如果您要将nil与某些内容进行比较,则应使用“==”,如果NSNull则为 - &gt; if ([var isEqual:[NSNull null]]) { ....}