Objective c 如果(aValue)其中aValue是一个指针,那么我们到底在做什么?

Objective c 如果(aValue)其中aValue是一个指针,那么我们到底在做什么?,objective-c,type-conversion,Objective C,Type Conversion,指针是否发生隐式转换/强制?如果是,是什么类型 在这两种情况下,这是否完全等同于if(aValue!=nil)?在这两种情况下,这是否完全等同于if(aValue!=nil) 对。您只是在测试指针是否为非零值。可能是垃圾。可以指向任何随机对象。没关系。if(aValue)检查值是否为非零,如在基于C的语言中,0对应于false,非零对应于true if(aValue!=nil)检查值是否与nil不同,nil定义为(id)0 因此,这两种情况将aValue比较为零。其含义来自C语言,Objecti

指针是否发生隐式转换/强制?如果是,是什么类型

在这两种情况下,这是否完全等同于if(aValue!=nil)?

在这两种情况下,这是否完全等同于if(aValue!=nil)

对。您只是在测试指针是否为非零值。可能是垃圾。可以指向任何随机对象。没关系。

if(aValue)
检查值是否为非零,如在基于C的语言中,0对应于
false
,非零对应于
true

if(aValue!=nil)
检查值是否与
nil
不同,
nil
定义为
(id)0


因此,这两种情况将aValue比较为零。

其含义来自C语言,Objective-C是其超集。在C语言中,
if
语句实际上并不测试布尔真/假,而是测试表达式是否为非零

因此,当
if
中的表达式为任何指针类型时,如果指针值为非零,则选择“then”分支;如果指针值为0,则选择
else
分支(也称为
nil
)。因此:

在这两种情况下,这是否完全等同于if(aValue!=nil)