在目标c中创建默认变量(对象)

时间:2013-07-23 21:30:30

标签: ios objective-c cocoa-touch

愚蠢的问题:假设我在条件语句中分配var。我不知道条件是否会得到满足,我仍然希望定义var ..什么是正确的写作方式

示例:

    NSDecimalNumber *number = [[NSDecimalNumber alloc]init];  // this is pointless right?

    if(x == z){
        number = [whatevernum1 decimalNumberByMultiplyingBy: whatevernum2];
    } else {
        number = [whatevernum2 decimalNumberByDividingBy: whatevernum3];
    }

    // do something with number variable.

3 个答案:

答案 0 :(得分:2)

没有必要初始化number,因为它将被设置。就这样做:

NSDecimalNumber *number;

if(x == z){
    number = [whatevernum1 decimalNumberByMultiplying: whatevernum2];
} else {
    number = [whatevernum2 decimalNumberByDividing: whatevernum3];
}

// do something with number variable.

在您的情况下,number会以某种方式分配值。但是你可能会遇到这样的情况:

if (someCondition) {
    // set number to value A
} else if (anotherCondition) {
    // set number to value B
}

这里可能既不满足条件也不满足。在这种情况下,您需要通过将number初始化为nil来正确处理此问题。

NSDecimalNumber *number = nil;

if (someCondition) {
    // set number to value A
} else if (anotherCondition) {
    // set number to value B
}

if (number) {
    // process result
}

答案 1 :(得分:0)

您需要声明变量但不要分配它,如下所示:

NSDecimalNumber *number;

if(x == z){
    number = [whatevernum1 decimalNumberByMultiplying: whatevernum2];
} else {
    number = [whatevernum2 decimalNumberByDividing: whatevernum3];
}

这告诉编译器你想使用一个名为number的变量,但还没有它的值。在某些情况下,您可能会发现将变量初始化为nil比将其保留为空指针更方便。

答案 2 :(得分:0)

正常情况下,正如其他人所指出的那样,你要么不会初始化(如果你可以保证你会设置一个值,例如通过if / else对),或者你会初始化为nil

在这个简单的例子中,三元语句会使你的代码更清晰:

NSDecimalNumber *number = x == z ? [whatevernum1 decimalNumberByMultiplyingBy:whatevernum2] : [whatevernum2 decimalNumberByDividingBy:whatevernum3];