我有這樣的功能:例外:對象不能是零
+ (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];
}
當我將它傳遞一個nil對象variableValues程序崩潰和提出的例外是,我不能replaceObjectAtIndex:withObject:用零目的。我明白爲什麼異常被調用,但不應該if (variableValues)
防止整個塊甚至被輸入,如果variableValues是零?
你確定這不是'popOperandOffStack'是造成死機? – dasblinkenlight 2011-12-20 03:56:13
沒有調用replaceObjectAtIndex:withObject:在那裏,所以它不應該在那裏。 – birarda 2011-12-20 04:02:25
valueForKey返回nil,因爲沒有該鍵的輸入。 – 2011-12-20 04:12:39