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

Minha Primeira app iOS

Minha Primeira app iOS

Os conceitos e informações básicas necessários para que você crie sua primeira aplicação para a plataforma móvel da Apple.

Ricardo Valeriano

May 05, 2012
Tweet

More Decks by Ricardo Valeriano

Other Decks in Programming

Transcript

  1. @sr_valeriano • Ricardo Valeriano • Developer iOS, Java, Ruby e

    JavaScript • Instrutor iOS, Java, Ruby e JavaScript • github.com/ricardovaleriano Monday, August 6, 12
  2. Como? • Básico, mesmo, mesmo • Base para pesquisar depois

    • Alguns conceitos... básicos • Algum código nos slides =( • Algum código ao vivo =) Monday, August 6, 12
  3. NeXT Computer • 1985 - fundada por Jobs • 1988

    - 1º NeXTStep Release Monday, August 6, 12
  4. NeXT Computer • 1985 - fundada por Jobs • 1988

    - 1º NeXTStep Release • 1990 - NeXTstation Monday, August 6, 12
  5. NeXT Computer • 1985 - fundada por Jobs • 1988

    - 1º NeXTStep Release • 1990 - NeXTstation Monday, August 6, 12
  6. NeXT Computer • 1985 - fundada por Jobs • 1988

    - 1º NeXTStep Release • 1990 - NeXTstation • 1990 - NeXTcube Monday, August 6, 12
  7. NeXT Computer • 1985 - fundada por Jobs • 1988

    - 1º NeXTStep Release • 1990 - NeXTstation • 1990 - NeXTcube Monday, August 6, 12
  8. NeXT Computer • 1985 - fundada por Jobs • 1988

    - 1º NeXTStep Release • 1990 - NeXTstation • 1990 - NeXTcube • 1993 - NeXTStep (S.O.) Monday, August 6, 12
  9. NeXT Computer • 1985 - fundada por Jobs • 1988

    - 1º NeXTStep Release • 1990 - NeXTstation • 1990 - NeXTcube • 1993 - NeXTStep (S.O.) Monday, August 6, 12
  10. Steve Jobs e NeXTSTEP • Unix-like :: BSD • Objective-C

    runtime • O.O. application layer • Dock • GUI Monday, August 6, 12
  11. OpenStep “OpenStep was an object-oriented application programming interface (API) specification

    for an object-oriented operating system that used a non-NeXTSTEP operating system as its core, principally developed by NeXT with Sun Microsystems.” Monday, August 6, 12
  12. Core OS iOS External Accessory Framework Core Bluetooth Security Framework

    System (thread, network, memory) Monday, August 6, 12
  13. Core OS iOS External Accessory Framework Core Bluetooth Security Framework

    System (thread, network, memory) Monday, August 6, 12
  14. Core OS iOS External Accessory Framework Core Bluetooth Security Framework

    System (thread, network, memory) Monday, August 6, 12
  15. Objective-C • Orientado a Objetos • Dinâmico • Gerenciamento de

    memória é contigo! • Square Brackets prá dar e vender Monday, August 6, 12
  16. Diretivas (*.h) #import <Foundation/Foundation.h> @interface Contato : NSObject @end Disponibiliza

    recursos e tipos básicos (como a classe NSString) Monday, August 6, 12
  17. Diretivas (*.m) #import "Contato.h" @implementation Contato @end Objective C, meu

    amigo, agora vamos implementar a classe Monday, August 6, 12
  18. to *contato = [ init]; Instanciando Objetos Contato alloc Na

    verdade é assim que se invoca! Contato alloc Monday, August 6, 12
  19. to *contato = [ init]; Instanciando Objetos [Contato alloc] Agora

    está completo. Contato alloc Monday, August 6, 12
  20. to *contato = [ init]; Instanciando Objetos [Contato alloc] Retorna

    uma “promessa”, queremos o Objeto (do tipo Contato) Monday, August 6, 12
  21. to *contato = [ init]; Instanciando Objetos [Contato alloc] Nova

    invocação de método! [ init]; Monday, August 6, 12
  22. to *contato = [ init]; Instanciando Objetos [Contato alloc] O

    retorno é um objeto do tipo Contato. [ init]; Monday, August 6, 12
  23. Contato *contato = [ init]; Instanciando Objetos [Contato alloc] [

    init]; contato = Criando uma referência chamada contato para o novo objeto. Monday, August 6, 12
  24. Contato [ init]; Instanciando Objetos [Contato alloc] [ init]; Define

    o tipo da referência. contato = Monday, August 6, 12
  25. Contato * [ init]; Instanciando Objetos [Contato alloc] [ init];

    Por falar em referência Contato [ init]; contato = Monday, August 6, 12
  26. Propriedades @property nome; Declaração (*.h) nonatomic strong NSString * (

    , ) Tipo referenciado por nome Monday, August 6, 12
  27. Propriedades @property nome; Declaração (*.h) nonatomic strong NSString * (

    , ) Por falar em referência... Monday, August 6, 12
  28. Propriedades @property nome; Declaração (*.h) nonatomic strong NSString * (

    , ) Gerenciamento de memória (como interefer no contador de referência) Monday, August 6, 12
  29. Propriedades @property nome; Declaração (*.h) nonatomic strong NSString * (

    , ) Gerenciamento de memória (como interefer no contador de referência) Monday, August 6, 12
  30. Propriedades @property nome; Declaração (*.h) nonatomic strong NSString * (

    , ) Acesso concorrente (threads) Monday, August 6, 12
  31. Propriedades • Métodos de acesso e atribuição Contato *contato =

    [[Contato alloc] init]; [contato setNome:@"Ricardo Valeriano"]; NSString *nome = [contato nome]; Monday, August 6, 12
  32. Propriedades Contato *contato = [[Contato alloc] init]; contato.nome = @"Ricardo

    Valeriano"; NSString *nome = contato.nome; • Métodos de acesso e atribuição • Podem ser acessadas via “dot notation” Monday, August 6, 12
  33. Maps NSString *urlEndereco = [NSString stringWithFormat:@"http://maps.google.com/maps? q=%@", @"Av. Ana costa"];

    NSString *appUrl = [urlEndereco stringByAddingPercentEscapesUsingEncoding:NSUTF8 StringEncoding]; Monday, August 6, 12
  34. Maps NSString *urlEndereco = [NSString stringWithFormat:@"http://maps.google.com/maps? q=%@", @"Av. Ana costa"];

    NSString *appUrl = [urlEndereco stringByAddingPercentEscapesUsingEncoding:NSUTF8 StringEncoding]; NSURL *url = [NSURL URLWithString:appUrl]; [[UIApplication sharedApplication] openURL:url]; Monday, August 6, 12
  35. Telefone NSString *appUrl = @"tel:98761234"; NSURL *url = [NSURL URLWithString:appUrl];

    [[UIApplication sharedApplication] openURL:url]; Monday, August 6, 12
  36. Frameworks if([MFMailComposeViewController canSendMail]){ ! ! MFMailComposeViewController *enviadorEmail = [[MFMailComposeViewController alloc]

    init]; ! ! enviadorEmail.mailComposeDelegate = self; [enviadorEmail setToRecipients:[NSArray arrayWithObject:@"ricardovaleriano@caelum"]]; Monday, August 6, 12
  37. Frameworks if([MFMailComposeViewController canSendMail]){ ! ! MFMailComposeViewController *enviadorEmail = [[MFMailComposeViewController alloc]

    init]; ! ! enviadorEmail.mailComposeDelegate = self; [enviadorEmail setToRecipients:[NSArray arrayWithObject:@"ricardovaleriano@caelum"]]; ! [enviadorEmail setSubject:@"Dev in Santos"]; Monday, August 6, 12
  38. Frameworks if([MFMailComposeViewController canSendMail]){ ! ! MFMailComposeViewController *enviadorEmail = [[MFMailComposeViewController alloc]

    init]; ! ! enviadorEmail.mailComposeDelegate = self; [enviadorEmail setToRecipients:[NSArray arrayWithObject:@"ricardovaleriano@caelum"]]; ! [enviadorEmail setSubject:@"Dev in Santos"]; ! [self presentModalViewController:enviadorEmail Monday, August 6, 12
  39. Frameworks if([MFMailComposeViewController canSendMail]){ ! ! MFMailComposeViewController *enviadorEmail = [[MFMailComposeViewController alloc]

    init]; ! ! enviadorEmail.mailComposeDelegate = self; [enviadorEmail setToRecipients:[NSArray arrayWithObject:@"ricardovaleriano@caelum"]]; ! [enviadorEmail setSubject:@"Dev in Santos"]; ! [self presentModalViewController:enviadorEmail animated:YES]; Monday, August 6, 12
  40. Frameworks if([MFMailComposeViewController canSendMail]){ ! ! MFMailComposeViewController *enviadorEmail = [[MFMailComposeViewController alloc]

    init]; ! ! enviadorEmail.mailComposeDelegate = self; [enviadorEmail setToRecipients:[NSArray arrayWithObject:@"ricardovaleriano@caelum"]]; ! [enviadorEmail setSubject:@"Dev in Santos"]; ! [self presentModalViewController:enviadorEmail animated:YES]; } Monday, August 6, 12
  41. Open Source? • Não é tão forte • Mas tem

    coisas bacanas Monday, August 6, 12
  42. Como? • Baixe o Xcode (ide) da Apple • Crie

    uma aplicação integrada com a câmera Monday, August 6, 12
  43. Como? • Baixe o Xcode (ide) da Apple • Crie

    uma aplicação integrada com a câmera • Se puder ser social, melhor Monday, August 6, 12
  44. Como? • Baixe o Xcode (ide) da Apple • Crie

    uma aplicação integrada com a câmera • Se puder ser social, melhor Monday, August 6, 12
  45. Como? • Baixe o Xcode (ide) da Apple • Crie

    uma aplicação integrada com a câmera • Se puder ser social, melhor • Vá prá galera Monday, August 6, 12
  46. Como? • Baixe o Xcode (ide) da Apple • Crie

    uma aplicação integrada com a câmera • Se puder ser social, melhor • Vá prá galera Monday, August 6, 12