Исключение: объект не может быть нулем - PullRequest
0 голосов
/ 20 декабря 2011

У меня есть эта функция:

+ (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?

1 Ответ

0 голосов
/ 20 декабря 2011

Вы можете иметь NSDictionary, который не ноль, но не содержит ключ obj .......

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...