Superando barreiras no desenvolvimento iOS

Superando barreiras no desenvolvimento iOS

Palestra apresentada no DevCamp 2013.

841a0284060fa6faa652e95a467dcc69?s=128

Marcelo Fabri

May 11, 2013
Tweet

Transcript

  1. Superando Barreiras no Desenvolvimento iOS

  2. •Apresentação •Motivação •Pré-requisitos •Linguagem •IDE •Dependências •DEMO •Últimos detalhes Agenda

  3. Eu sou o Marcelo! marcelofabri.com @marcelofabri_ me@marcelofabri.com

  4. Quem?!

  5. Quem?

  6. Sobre o que é essa palestra?

  7. Sobre o que NÃO é essa palestra?

  8. None
  9. None
  10. None
  11. Mas sério, sobre o que é essa palestra?

  12. Fácil. Barreiras.

  13. None
  14. Chega de nhenhenhe.

  15. Primeira barreira

  16. Xcode só roda no Mac OSX

  17. Beleza. Arranjei um Mac. E agora? #comofas

  18. Objective-C

  19. Objective-C + (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue*) queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))

    handler [NSURLConnection sendAsynchronousRequest:req queue:queue completionHandler:^(NSURLResponse *resp, NSData *data, NSError *err) { NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); }];
  20. Acha isso ruim? Vamos ver algumas melhorias

  21. home.view.frame = self.view.frame; [[home view] setFrame:[[self view] frame]]; Para acessar

    propriedades, usa-se dot notation. Métodos são chamados com colchetes. Dot Notation
  22. NSDictionary *palestrante = [NSDictionary dictionaryWithObjectsAndKeys:@"Marcelo", @"nome", @"Palmeiras", @"time", nil]; NSString

    *nome = [palestrante objectForKey:@"nome"]; NSArray *numeros = [NSArray arrayWithObjects:[NSNumber numberWithInt:1], [NSNumber numberWithInt:2], nil]; NSNumber *um = [numeros objectAtIndex:0]; NSDictionary *palestrante = @{@"nome": @"Marcelo", @"time": @"Palmeiras"}; NSString *nome = palestrante[@"nome"]; NSArray *numeros = @[@1, @2]; NSNumber *um = numeros[0]; Literals http://clang.llvm.org/docs/ObjectiveCLiterals.html
  23. None
  24. Mas e o gerenciamento de memória? Me falaram que não

    tem Garbage Collector.
  25. Não tem mesmo. É usado contagem de referências. http://en.wikipedia.org/wiki/Reference_counting

  26. Vou ter que controlar isso na mão?

  27. NÃO!

  28. ARC http://clang.llvm.org/docs/AutomaticReferenceCounting.html

  29. None
  30. There’s a twist!

  31. ARC não é magia •“Objetos” do CoreFoundation (C) devem ser

    controlados na mão •Retain cycles
  32. Xcode

  33. Xcode •Ruim, mas já foi pior! •Modinha nova: plugins ✓ColorSense-for-Xcode

    ✓KSImageNamed-Xcode http://mneorr.github.io/Alcatraz/
  34. None
  35. Sabe o que seria massa? Se eu pudesse usar alguma

    coisa igual o maven.
  36. Existe algo assim! Chama CocoaPods http://www.raywenderlich.com/12139/introduction-to-cocoapods

  37. DEMO https://github.com/marcelofabri/devcamp-demo

  38. “Acabei meu app. Vamos colocar na AppStore e ganhar milhões.”

  39. É importante testar em dispostivos reais.

  40. E o que isso significa?

  41. DOR.

  42. None
  43. None
  44. WHY?

  45. Code Sign

  46. Code Sign TestFlight HockeyApp

  47. Relembrando •Só com Mac OSX •Objective-C •ARC •Xcode •CocoaPods •Code

    Sign
  48. E agora?

  49. None
  50. Links •https://developer.apple.com/ •http://www.raywenderlich.com/ •https://github.com/github/objective-c-conventions •http://informalprotocol.com/2012/10/declaring-blocks-in-objective-c/ •http://iosdevweekly.com/ •http://nshipster.com/ •http://amattn.com/2011/12/07/arc_best_practices.html •http://dannysu.com/2012/07/30/automatic-reference-counting-on-ios/ •http://www.mikeash.com/pyblog/friday-qa-2011-09-30-automatic-reference-

    counting.html •http://conradstoll.com/blog/2013/1/19/blocks-operations-and-retain-cycles.html •https://speakerdeck.com/marcelofabri/e-se-eu-tivesse-um-delorean-tdc-2012 •http://www.raywenderlich.com/21987/top-10-most-useful-ios-libraries-to-know-and- love •http://www.raywenderlich.com/31166/25-ios-app-performance-tips-tricks
  51. None
  52. One more thing...

  53. None
  54. Obrigado! marcelofabri.com @marcelofabri_ me@marcelofabri.com