Оценка каждого условного оператора в блоке if… else if…

Оценивает ли Objective-C каждое утверждение на if ... else if ... блокирует или оценивает каждое из них, а затем пропускает оставшиеся оценки, если истинное условие было найдено?

Это скорее прагматический вопрос, связанный с производительностью, чем что-либо еще.

И да, я знаю что содержимое самого блока if не выполняется, но я имею в виду фактические операторы, которые оцениваются.

Пример

if ([condition A] == test) {
  // Do something
} else if ([condition B] == test) {
  // Do something    
} else if ([condition C] == test) {
  // Do something    
} else {
  // Do something because all other tests failed
}    

Итак ... если условие A истинно, выполняются ли условия B и C в любом случае ?

Если они это сделают, тогда использование оператора switch работает таким же образом или switch проверяет только каждое условие по мере его поступления, а затем завершает оценку из-за разрыва?

Насколько я понимаю, на if ... else если ... блок, каждое условие оценивается, и, следовательно, использование переключателя или вложенных if (тьфу, не смакуйте эту мысль) может быть быстрее при больших операциях оценки большого количества данных (сотни тысяч элементов проверяются на потенциально сотню операторов ).

Просто любопытно: -)

5
задан Hooligancat 15 October 2010 в 18:41
поделиться