是否所有非nil对象在objective-c中的计算结果为true?

时间:2012-12-12 21:07:15

标签: objective-c

在objective-c中,每个非nil对象的值是否为true?就是这样:

if (thing) NSLog(@"yes");

与此相同:

if (thing != nil) NSLog(@"yes");

根据经验,它似乎是真的,即使是thing = @0,但我找不到实际说明的文档。

5 个答案:

答案 0 :(得分:4)

这是真的。

@0将是NSNumber对象,其值为0,而不是地址0(无)。

答案 1 :(得分:3)

是的,不是nil(或NULL)的每个指针都评估为真,就像在旧C中一样。对于像NSNull这样的对象也是如此。就像他们会评价为假。

答案 2 :(得分:3)

是的,因为Objective-C是一个超过C的层,所以适用相同的规则。

在C中,每个非NULL变量/指针的计算结果为true,因此在Objective-C中也是如此

同样@0表示指向NSNumber的非NULL指针,因此它正确地计算为true。

答案 3 :(得分:3)

if检查0(false)或任何其他数字(true)。由于你的“东西”基本上是一个地址(因此是一个有效的数字),它将评估为“真实”。

答案 4 :(得分:2)

((@0) && ([NSNULL null]) && (YES) && (thing) && (int a = 2))
除非TRUE

分别评估为YESthing==nil