当我们这样做(aValue)aValue是一个指针时到底发生了什么?

时间:2016-02-05 20:05:49

标签: objective-c type-conversion

是否发生指针的隐式转换/强制?如果是这样的话?

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

因此,两种情况都将aValue与零进行比较。

答案 2 :(得分:0)

意思来自C语言,其中Objective-C是超集。在C中,if语句实际上没有测试布尔值true / false,但是表达式是否为非零。

因此当if中的表达式是任何指针类型时,"然后"如果指针值非零则选择分支,而当{0}(又称else)时选择nil分支。所以:

  

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