2011-09-19 14 views
23

Studiuję Objective-C i natknąłem się na to stwierdzenie "for ... in". Szukałem go, ale nadal nie rozumiem, jak to działa. Czy ktoś mógłby mi wyjaśnić, jak przyjazne noobowi jest to, jak działa to stwierdzenie?Dla ... w oświadczeniu Objective-C

+1

To znaczy, za kulisami, i jak go używać? –

+0

Możesz znaleźć wiele, jeśli szukasz "szybkiego wyliczenia celu c" – progrmr

Odpowiedz

49

Zobacz fast enumeration documentation.

Zasadniczo zwykle masz tablicę i możesz uzyskać każdy element w tablicy za pomocą poręcznej pętli zamiast używać NSEnumerator lub zmiennej liczby całkowitej. To sprawia, że ​​twój kod jest znacznie czystszy, aby poprosić o każdy NSString w twojej tablicy, zamiast przypisać do zmiennej używając objectAtIndex dla każdego przejścia twojej pętli.

Porównaj:

for (NSString *string in myArray) 
{ 
    // do stuff... 
} 

Do:

for (int i = 0; i < [myArray count]; i++) 
{ 
    NSString *string = [myArray objectAtIndex:i]; 
    // Do stuff... 
} 
+0

Oprócz tego, że jest czystszy, jest także szybszy. Istnieje powód, dla którego jest to również nazywane "szybkim wyliczeniem". – zneak

+2

Szybciej, bezpieczniej, więcej zabawy ... OK, może nie ostatnia. – jrturton

+1

Dziękuję bardzo! Ale nadal nie rozumiem, jaka jest szczególna funkcja części "ciąg". Gdybym miał inne obiekty w tablicy oprócz łańcuchów, jak by to działało? Czy nadal będzie wyliczał przez wszystkie obiekty, czy pominie rzeczy, które nie są ciągami? –

Powiązane problemy