Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Eu preciso reativar minha aplicação iOS? -TDC2017

Eu preciso reativar minha aplicação iOS? -TDC2017

Apresentação da talk sobre Reactive na trilha de iOS no TDC2017

More Decks by Vinicius Carvalho Marques

Other Decks in Programming

Transcript

  1. Agenda 1. Leve introdução sobre Reactive; 2. O que ganhamos

    resolvendo os nossos desafios de maneira reativa; 3. Frameworks; 4. Quando aplicar; 5. Ganhos e percas com a sua utilização;
  2. "Obj-C is not a bad language and people shouldn’t feel

    the need to get away from it just because Swift is new."
  3. "Reactive programming manages asynchronous data flows between sources of data

    and components that need to react to that data." Matt Gallagher, cocoawithlove.com
  4. “Ah, é legal porque eu vi que o Ash Furrow

    usa em seus projetos.” - Fulano
  5. O que ganhamos resolvendo um problema de forma reativa? •

    Redução de estados; • Código mais conciso; • Mais fácil de ler
  6. eleva o nível de abstração do seu código para que

    você possa se concentrar na interdependência dos eventos que definem a lógica de negócio. Programação Reativa
  7. Quando aplicar? Depende da complexidade que seu código está tomando

    proporção… -Operações de chamadas de API; - UI; - MVVM
  8. Observer let (signal, observer) = Signal<String, NoError>.pipe() signal.observeValues { animal

    in print( "value: \ (animal)") } observer.sendNext(value: "cat") observer.sendNext(value: "dog")
  9. Redução de estados var loading: Bool var userLoggedIn: Bool var

    didShowAlert: Bool var loading = reactive(userLoggedIn) && reactive(didShowAlert)
  10. Transformação e combinação let loading = Observable.combineLatest(userLoggedIn, didLoadContent) { !($0

    && $1) } loading.subscribe(onNext: { print("loading: \($0)") }) userLoggedIn.onNext(false) didLoadContent.onNext(false) userLoggedIn.onNext(true) didLoadContent.onNext(true) > loading: true > loading: true > loading: false
  11. 1. Debugar - (void)instalarRacGps { if (self.infoModel.mes_competencia.length > 0 &&

    self.infoModel.ano_competencia.length > 0) { self.textCampo.text = [NSString stringWithFormat:@"%@/%@", self.infoModel.mes_competencia, self.infoModel.ano_competencia]; } @weakify(self) [[RACSignal merge: @[self.textCampo.rac_textSignal, RACObserve(self.textCampo, text)]] subscribeNext:^(id idx) { @strongify(self); self.infoModel.mes_competencia = [NSDateFormatter stringFromDate:self.datePicker.date withFormat:@"MM"]; self.infoModel.ano_competencia = [NSDateFormatter stringFromDate:self.datePicker.date withFormat:@"yyyy"]; }]; }
  12. “Listen, if you’re a beginner, it really doesn’t matter. Yes,

    of course there are technical differences, but they aren’t meaningful to newcomers. Try one framework, then try the other. See for yourself which one you prefer! Then you can figure out why you prefer it.” - Ash Furrow
  13. www.concretesolutions.com.br Ajudamos empresas a criar produtos digitais de sucesso Belo

    Horizonte - Av. Getúlio Vargas, 671 8º andar, sala 800 - Savassi - (31) 3360-8900 Rio de Janeiro - Rua São José, 90 - cj. 2121 Centro - (21) 2240-2030 São Paulo - Av. Nações Unidas, 11.541 3º andar - Brooklin - (11) 4119-0449