2011-11-05 11 views

Odpowiedz

12

Oto dyskusja bloków z mojej książki:

http://www.apeth.com/iOSBook/ch03.html#_blocks

Jest to przykład tam, ale tutaj jest przykład, który znajduje się bliżej rodzaju rzeczy pytasz o:

[self transitionFromViewController:fromvc 
        toViewController:tovc 
          duration:0.4 
          options:UIViewAnimationOptionTransitionFlipFromLeft 
         animations:nil 
         completion:^(BOOL done){ 
          [tovc didMoveToParentViewController:self]; 
          [fromvc removeFromParentViewController]; 
         }]; 

Blok zakończenia przyjmuje jeden parametr, BOOL - "done", ale nie jest on używany przez jego kod. Chodzi o to, że animacja jest wykonywana, a następnie uruchamiany jest kod w bloku zakończenia.

Bardzo ważne jest, aby czuć się komfortowo z blokami, ponieważ są one drogą przyszłości. Na przykład, widok animacji w iOS 4 używa ich, jak wyjaśniono w sekcji „Blok Based View Animacja” mojej książki (najpierw przeczytać o starej drodze, a potem czytać o nowych iOS 4 sposób):

http://www.apeth.com/iOSBook/ch17.html#_view_animation

W iOS 5 bloków jest jeszcze ważniejszych; jest coraz więcej sytuacji, w których nie są one opcjonalne.

Również bloki są sposobem użycia GCD (grand central dispatch), który jest zdecydowanie najlepszym sposobem na wielowątkowość.

+0

Dziękuję matce, która wygląda jak świetna książka, którą napisałeś, jakieś plany na wersję dla systemu iOS 5 ?! –

+1

@Eddie: Zacząłem konwersji wszystkie pobrania przykładów iOS 5: https://github.com/mattneub/Programming-iOS-4-Book-Examples/tree/master/convertedToIOS5 Więcej informacji do naśladowania ... – matt

3

To byłoby za blok ukończenia. Blok to fragment kodu, który może zostać przesłany jako argument (często widziany, jak tutaj, w celu obsługi uzupełnień) do interfejsu API. Istnieje wiele cech bloków, w tym możliwość odniesienia pamięci i stanu konserwacji.

Zobacz dokumentację w tej coraz popularniejszej cechą Obj-C: http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/00_Introduction.html

Bloki zapewnić tego, co może być uznane za zachowanie zwrotna (zazwyczaj osiągane z delegacją lub notyfikacji), ale pozwalają one programiście zawierać logikę zachowanie zakończenia w tym samym kontekście, co działanie inicjujące, czyniąc kod bardziej ekspresyjnym i przekazując zwięzły kompletny postęp zamierzonego zachowania.

+2

Można dodać, że jest niezwykle przydatny do wykonywania wszelkich porządków lub uruchamiania innych czynności, które należy wykonać po zwolnieniu. Często używane zamiast wywołania zwrotnego oddzwaniacza – timthetoolman

+0

Dziękuję isaac, krótko przeczytałem o blokach po ich wprowadzeniu, ale nierozsądnie nie zajrzałem do składni! –

+0

@timthetoolman dobra rada. Mam rozszerzoną odpowiedź, która zawiera porównanie z innymi powszechnymi mechanizmami obsługi zakończeń w kakao. – isaac

Powiązane problemy