例外:对象不能为零

时间:2011-12-20 03:51:55

标签: objective-c

我有这个功能:

+ (double)runProgram:(id)program usingVariableValues:(NSDictionary *)variableValues
{
    NSMutableArray *stack = [CalculatorBrain programToStack:program];
    if (variableValues) {
        NSSet *variables = [CalculatorBrain variablesUsedInProgram:program];
        NSUInteger index = 0;
        for (id obj in [stack copy]) {
            if ([variables containsObject:obj]) {
                [stack replaceObjectAtIndex:index withObject:[variableValues valueForKey:obj]];
            }
            index++;
        }
    }    
    return [self popOperandOffStack:stack];        
}

当我为variableValues传递一个nil对象时程序崩溃,引发的异常就是我无法用一个nil对象替换ObjectAtIndex:withObject:。我理解为什么要调用异常但是如果variableValues为nil,那么if (variableValues)是否应该阻止整个块被输入?

1 个答案:

答案 0 :(得分:0)

你可以拥有一个不是nil但不包含obj键的NSDictionary .......