在objective-c中,每个非nil对象的值是否为true?就是这样:
if (thing) NSLog(@"yes");
与此相同:
if (thing != nil) NSLog(@"yes");
根据经验,它似乎是真的,即使是thing = @0
,但我找不到实际说明的文档。
答案 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
,分别评估为YES
或thing==nil