:私はプログラムがクラッシュしvariableValuesのためにそれをnilのオブジェクトを渡すと発生する例外がある場合は例外:オブジェクトをすることはできませんnilの私は、この機能を持っている
+ (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];
}
をその私はできませんreplaceObjectAtIndex:withObject:nilを持ちますオブジェクト。なぜ例外が呼び出されているのか理解していますが、variableValuesがnilの場合は、ブロック全体が入力されないようにしてください。if (variableValues)
あなたはNSDictionaryのがnilまだOBJのキーが含まれていないではないthatsの持つことができます
は、それがクラッシュを引き起こしている 'popOperandOffStack'ではありませんあなたは確かにいますか? – dasblinkenlight
そこにreplaceObjectAtIndex:withObject:を呼び出す必要はありません。 – birarda
valueForKeyはそのキーのエントリがないので、nilで戻ってきます。 –