目标C中的三元算子与If / Else

时间:2016-06-18 12:34:46

标签: objective-c logic

在速度方面,使用if/else语句和Objective C中的ternary operator之间有什么区别吗?它们在编译代码中是否相同?

也就是说,除了节省空间之外,是否有任何理由使用以下其中一种?

//First Option
Object *myObj = boolean ? trueValue : falseValue;

//Second Option
Object *myObj;
if (boolean) {
    myObj = trueValue;
else {
    myobj = falseValue;
}

1 个答案:

答案 0 :(得分:1)

尽管编译代码可能存在细微差别,但除了可读性之外没有理由偏向于另一种方式。

if / else方法的一个优点是您可以使用单个条件设置多个变量:

Object *myObj1;
Object *myObj2;
if (boolean) {
    myObj1 = trueValue1;
    myObj2 = trueValue1;
else {
    myobj1 = falseValue2;
    myobj2 = falseValue2;
}

由于Objective-C中的boolean是一个值为0和1的数字类型,因此有一种方法根本不依赖于条件:

Object *valArray[] = { falseValue, trueValue };
Object *myObj = valArray[boolean];