我有这个功能:
+ (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)
是否应该阻止整个块被输入?
答案 0 :(得分:0)
你可以拥有一个不是nil但不包含obj键的NSDictionary .......