Does Objective-C valuta ogni istruzione su un blocco if... else if...
o valuta ciascuno come viene loro e quindi salta le valutazioni rimanenti se una condizione vera è stato trovato?Valutazione di ogni istruzione condizionale su un blocco if ... else if ...
Questa è più una questione pragmatica relativa alle prestazioni di qualsiasi altra cosa.
E sì, so che il contenuto del blocco if non viene eseguito, ma mi riferisco alle dichiarazioni effettive che vengono valutate.
Esempio
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
}
Quindi ... se la condizione A è vero, fanno condizioni B e C ottenere valutati in ogni caso?
In tal caso, l'utilizzo di un'istruzione di commutazione si comporta allo stesso modo oppure un interruttore verifica solo ciascuna condizione così come viene e quindi esce dalla valutazione a causa dell'interruzione?
La mia comprensione è che su un blocco if... else if...
, ogni condizione viene valutata e quindi l'utilizzo di un commutatore o di un nidificato if (ugh - non assaporare il pensiero in quel punto) potrebbe essere più veloce su grandi operazioni di valutazione su molti dati (centinaia di migliaia di articoli controllati contro potenzialmente un centinaio di dichiarazioni).
Solo curioso :-)
La domanda migliore è, "non C ...?" dato che il controllo di base del flusso è ereditato da C. Objective-C è un superset di C. –