是否发生指针的隐式转换/强制?如果是这样的话?
在这两种情况下,完全等同于if(aValue!= nil)吗?
答案 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)?
是