Przejdź do głównej zawartości

Posty

Wyświetlanie postów z marzec, 2020

Swift, architektura, asynchroniczność

Wywołania asynchroniczne są jednym z elementów bardzo mocno wpływających na budowę całej aplikacji. Często jednak są traktowane jako zło konieczne lub nawet unikane, o ile to możliwe. Jednocześnie sam system iOS oraz składnia języka swift dostarczają narzędzi ułatwiających pracę w środowisku asynchronicznym.

Swift, podobnie jak JavaScript asynchroniczne wywołania opiera na callbackach. Oznacza to, że wołając funkcję asynchroniczną, jednym z argumentów jest inna funkcja (lub blok kodu), która ma zostać wywołana, kiedy praca asynchroniczna się zakończy. Mimo, że działanie jest odmienne od wywołania synchronicznego, zapis w kodzie wygląda mimo wszystko podobnie. Na przykład:


func synchroniczna() -> String { //jakaś praca w funkcji return "Wynik" } //wywołanie synchronicznej let dane = synchroniczna() print(dane) func asynchroniczna(callback: @escaping (String) -> Void) { DispatchQueue.global().async { //jakas praca callback("Wynik&qu…