У меня есть эта функция:
+ (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, программа падает, и возникает исключение, состоящее в том, что я не могу заменитьObjectAtIndex: withObject: объектом nil. Я понимаю, почему вызывается исключение, но не должно if (variableValues)
препятствовать тому, чтобы весь блок даже вводился, если variableValues равен nil?