在objective-c中,每个非零对象都评估为真,这是真的吗?也就是说,是这样的:
if (thing) NSLog(@"yes");
与此相同:
if (thing != nil) NSLog(@"yes");
从经验上看,这似乎是正确的,即使thing = @0
,但我找不到实际说明这一点的文档。
在objective-c中,每个非零对象都评估为真,这是真的吗?也就是说,是这样的:
if (thing) NSLog(@"yes");
与此相同:
if (thing != nil) NSLog(@"yes");
从经验上看,这似乎是正确的,即使thing = @0
,但我找不到实际说明这一点的文档。
这是真的。
@0
将是一个NSNumber
值为 0 的对象,而不是地址 0 (nil)。
是的,每个不是nil
(或NULL
)的指针都计算为真,就像在古老的 C 中一样。对于像 之类的对象也是如此NSNull
,听起来它们可能会计算为假。
是的,因为 Objective-C 是 C 之上的一层,所以同样的规则适用。
在 C 中,每个非 NULL 变量/指针的计算结果都为真,因此在 Objective-C 中也是如此
还@0
表示指向 a 的非 NULL 指针,NSNumber
因此它正确地计算为真。
if 检查 0 (false) 或任何其他数字 (true)。由于您的“事物”基本上是一个地址(因此是一个有效数字),因此它将评估为“真”。
((@0) && ([NSNULL null]) && (YES) && (thing) && (int a = 2))
评估为TRUE
或YES
分别除非thing==nil