Auswertung jede bedingte Anweisung in einer if... else if-block...

Tut Objective-C-bewerten Sie jede Aussage auf einer if... else if... block oder muss er bewerten, wie es zu Ihnen kommt, und überspringen Sie dann die verbleibenden Auswertungen wenn eine wahre Bedingung gefunden wurde?

Dies ist eher eine pragmatische Frage, die mit der Leistung zusammenhängen als alles andere.

Und ja, ich weiß, dass der Inhalt der if-block selbst ist nicht ausgeführt, aber ich bin auf die eigentlichen Anweisungen, die ausgewertet werden.

Beispiel

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
}    

So... wenn Bedingung A wahr ist, tun die Bedingungen B und C erhalten, ausgewertet überhaupt?

Wenn Sie es tun, dann bringt das mit einer switch-Anweisung führen Sie den gleichen Weg oder hat einen Schalter nur testen, jeder Zustand, wie er kommt, und dann beendet die Auswertung, da die Pause??

Mein Verständnis ist, dass auf eine if... else if... block, jede Bedingung ausgewertet wird und daher mit einem Schalter ein-oder geschachtelte if ' s (pfui - gar nicht mochte, der Gedanke da) könnte schneller auf big-Evaluierung der Operationen auf einer Menge von Daten (Hunderte von tausenden von Artikeln geprüft wird, gegen potenziell hundert Aussagen).

Einfach nur neugierig 🙂

  • Die bessere Frage ist, "C ...?" als die grundlegende Ablaufsteuerung ist geerbt von C. Objective-C ist eine Obermenge von C.
InformationsquelleAutor Hooligancat | 2010-10-15
Schreibe einen Kommentar