O que você precisa para iniciar no iOS e Objective-C -

1,426 views
1,309 views

Published on

Slides da apresentação na Mobile Conf Rio 2013.

Published in: Technology
2 Comments
4 Likes
Statistics
Notes
  • @osnipso Eu coloquei como 1986, que foi qdo Brad Cox lançou o livro. Mas na verdade é 1983. Valeu!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Oi Fábio! O Objective-C foi criado em 1993, pela StepStone. Nos seus slides ele aparece apenas em 1996, depois do C++ - na verdade, é o contrário. :-)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
1,426
On SlideShare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
55
Comments
2
Likes
4
Embeds 0
No embeds

No notes for slide

O que você precisa para iniciar no iOS e Objective-C -

  1. 1. O que você precisa para começar no iOS e Objective-C
  2. 2. Quem sou eu? @fabiopimentel * Desenvolvedor Java, Ruby, Android e iOS * Instrutor Java, Ruby, Android e iOS * github.com/fabiopimentel
  3. 3. Por que uma palestra para iniciante? * Objective-C? * Difícil de começar? Novidade(2007)! * Alta procura por desenvolvedores mobile no Brasil
  4. 4. Porque desenvolver para iOS?
  5. 5. “At Apple’s Worldwide Developer’s Conference in San Francisco today, Apple CEO Tim Cook revealed that since 2008, Apple has paid out developers $10 billion for their apps.” WWDC Jun/2013
  6. 6. http:/ /www.forbes.com/sites/tristanlouis/2013/08/10/how-much-do-average-apps-make/
  7. 7. http:/ /www.forbes.com/sites/tristanlouis/2013/08/10/how-much-do-average-apps-make/
  8. 8. O que você precisa? Lógica de programação Conhecimentos de Orientação de Objetos Saber pesquisar no Stack Overflow, Google
  9. 9. E agora? XCode
  10. 10. Mas eu não tenho Mac!
  11. 11. Vamos programar? Objective-C (OFICIAL) Ruby - RubyMotion C# - Xamarin
  12. 12. Objective-C C (1972) C++ (1985) ObjC (1986) Smalltalk (1980)
  13. 13. Objective-C C (1972) C++ (1985) ObjC (1986) Smalltalk (1980)
  14. 14. Brad Cox http://virtualschool.edu/cox/ 1986
  15. 15. História 76
  16. 16. História 76 85
  17. 17. Ainda em 85 ...
  18. 18. Next Computer Sistema Operacional NextStep
  19. 19. Next Computer Sistema Operacional NextStep Unix Like (Unix BSD) Conceito de Dock
  20. 20. Next Computer Sistema Operacional NextStep Unix Like (Unix BSD) Origem do Dock Conceitos de GUI
  21. 21. Next Computer Sistema Operacional NextStep Unix Like (Unix BSD) Origem do Dock Conceitos de GUI Primeiro navegador web
  22. 22. Next Computer Sistema Operacional NextStep Unix Like (Unix BSD) Origem do Dock Conceitos de GUI Primeiro navegador web Objective-C como linguagem
  23. 23. História 76 85 86
  24. 24. História 76 85 86 96
  25. 25. e junto comigo .... Project Builder
  26. 26. Project Builder XCode
  27. 27. e junto comigo .... Interface Builder XCode
  28. 28. Sho wm co d e the e! ! !
  29. 29. Declaração de classes
  30. 30. Declaração de classes Header File (.h) -> Declaração Implementation File (.m) -> Implementação
  31. 31. Declaração de classes Carro.h #import <Foundation/Foundation.h> @interface Carro @end
  32. 32. Declaração de classes Carro.h supertipo #import <Foundation/Foundation.h> @interface Carro : NSObject @end
  33. 33. Declaração de classes Carro.h #import <Foundation/Foundation.h> @interface Carro : NSObject { atributos NSString * modelo; int ano; } @end
  34. 34. Declaração de classes Carro.h #import <Foundation/Foundation.h> @interface Carro : NSObject { atributos NSString * modelo; int ano; @private(default) } @protected @public @end
  35. 35. Declaração de métodos
  36. 36. Declaração de métodos Método de instância -> Método de classe -> + -
  37. 37. Declaração de métodos Método de instância -> Método de classe -> - (void) retorno + -
  38. 38. Declaração de métodos Método de instância -> Método de classe -> - + - (void) acelera; nome
  39. 39. Declaração de métodos Método de instância -> Método de classe -> - (void) acelera; - (void) pintaCarro : recebe parâmetro + -
  40. 40. Declaração de métodos Método de instância -> Método de classe -> - + - (void) acelera; - (void) pintaCarro : (Carro *) tipo do parâmetro
  41. 41. Declaração de métodos Método de instância -> Método de classe -> + nome do parâmetro - (void) acelera; - (void) pintaCarro : (Carro *) carro;
  42. 42. Declaração de métodos Método de instância -> Método de classe -> - (void) acelera; - + ainda nome do método - (void) pintaCarro : (Carro *) carro; - (void) pintaCarro : (Carro *) carro comCor :
  43. 43. Declaração de métodos Método de instância -> Método de classe -> - + - (void) acelera; tipo do parâmetro - (void) pintaCarro : (Carro *) carro; - (void) pintaCarro : (Carro *) carro comCor : (NSString *);
  44. 44. Declaração de métodos Método de instância -> Método de classe -> - + - (void) acelera; nome do parâmetro - (void) pintaCarro : (Carro *) carro; - (void) pintaCarro : (Carro *) carro comCor : (NSString *) cor;
  45. 45. Declaração de métodos Método de instância -> Método de classe -> - + - (void) acelera; - (void) pintaCarro : (Carro *) carro; - (void) pintaCarro : (Carro *) carro comCor : (NSString *) cor;
  46. 46. Declaração de classes Carro.h #import <Foundation/Foundation.h> @interface Carro : NSObject { NSString * modelo; int ano; } -(void) setModelo : (NSString *) modelo; -(NSString *) modelo; -(void) setAno : (int) ano; -(int) ano; @end
  47. 47. Mas o que os métodos fazem?
  48. 48. São dois arquivos, lembra? Header File (.h) -> Declaração Implementation File (.m) -> Implementação
  49. 49. São dois arquivos lembra? Header File (.h) -> Declaração OK Implementation File (.m) -> Implementação
  50. 50. Declaração de classes Carro.m #import “Carro.h” @implementation Carro -(void) setModelo: (NSString *) modelo { self.modelo = modelo; } @end
  51. 51. Declaração de classes Carro.m #import “Carro.h” @implementation Carro -(void) setModelo: (NSString *) modelo { self.modelo = modelo; } -(NSString *) modelo { return modelo; } @end
  52. 52. Declaração de classes Carro.m #import “Carro.h” @implementation Carro -(void) setModelo: (NSString *) modelo { self.modelo = modelo; } -(NSString *) modelo { return modelo; } -(void) setAno: (int) ano { self.ano = ano; } -(int) ano { return ano; } @end
  53. 53. Declaração de classes Carro.m #import “Carro.h” @implementation Carro -(void) setModelo: (NSString *) modelo { self.modelo = modelo; } -(NSString *) modelo { return modelo; } -(void) setAno: (int) ano { self.ano = ano; } -(int) ano { return ano; } @end Mas tem um CTRL +3 Generate Getters and Setters ?
  54. 54. Declaração de classes Carro.m #import “Carro.h” @implementation Carro -(void) setModelo: (NSString *) modelo { self.modelo = modelo; } -(NSString *) modelo { return modelo; } -(void) setAno: (int) ano { self.ano = ano; } -(int) ano { return ano; } @end Quase isso!!!
  55. 55. Vamos voltar ....
  56. 56. Declaração de classes Carro.h #import <Foundation/Foundation.h> @interface Carro : NSObject { NSString * modelo; int ano; } -(void) setModelo : (NSString *) modelo; -(NSString *) modelo; -(void) setAno : (int) ano; -(int) ano; @end Carro.m #import “Carro.h” @implementation Carro -(void) setModelo: (NSString *) modelo { self.modelo = modelo; } -(NSString *) modelo { return modelo; } -(void) setAno: (int) ano { self.ano = ano; } -(int) ano { return ano; } @end
  57. 57. Declaração de classes Carro.h Carro.m #import “Carro.h” @implementation Carro #import <Foundation/Foundation.h> @interface Carro : NSObject @property NSString * modelo; @property int ano; @end -(void) setModelo: (NSString *) modelo { self.modelo = modelo; } -(NSString *) modelo { return modelo; } -(void) setAno: (int) ano { self.ano = ano; } -(int) ano { return ano; } @end
  58. 58. Mais sobre propriedades... @property ( nonatomic, strong ) NSString * modelo; x atomic x weak x assing
  59. 59. Mais sobre propriedades... @property ( nonatomic, strong ) NSString * modelo; x x weak atomic x assing Acesso concorrente (Threads)
  60. 60. Mais sobre propriedades... @property ( nonatomic, strong ) NSString * modelo; x atomic x weak x assign Gerenciamento de memória
  61. 61. Mais sobre propriedades... @property ( nonatomic, strong ) NSString * modelo; x atomic x weak x assign Gerenciamento de memória
  62. 62. Declaração de classes Carro.h Carro.m #import “Carro.h” @implementation Carro #import <Foundation/Foundation.h> @interface Carro : NSObject @property NSString * modelo; @property int ano; @end -(void) setModelo: (NSString *) modelo { self.modelo = modelo; } -(NSString *) modelo { return modelo; } -(void) setAno: (int) ano { self.ano = ano; } -(int) ano { return ano; } @end
  63. 63. Declaração de classes Carro.m Carro.h #import <Foundation/Foundation.h> @interface Carro : NSObject #import “Carro.h” @implementation Carro @property NSString * modelo; @property int ano; @synthesize modelo, ano; @end @end
  64. 64. Criando objetos Carro alloc Método de classe (+)
  65. 65. Criando objetos [Carro alloc] Chamada de método entre colchetes
  66. 66. Criando objetos [Carro alloc] init Método de instância (-)
  67. 67. Criando objetos [[Carro alloc] init] Chamada de método entre colchetes
  68. 68. Criando objetos Carro * carro = [[Carro alloc] init]; Referência
  69. 69. Usando objetos Carro * carro = [[Carro alloc] init]; [carro setModelo: @”Fusca”]; Chamada de método! []
  70. 70. Usando objetos Carro * carro = [[Carro alloc] init]; [carro setModelo: @”Fusca”]; NSString * modelo = [carro modelo]; método get
  71. 71. MUITA ATENÇÃO!!!!!!!
  72. 72. MUITA ATENÇÃO!!!!!!! ot D te is Ex on ti ta o N
  73. 73. MUITA ATENÇÃO!!!!!!! ra pa as n !! e s! p A de a ed ri op pr
  74. 74. Usando objetos Carro * carro = [[Carro alloc] init]; carro.modelo = @“Fusca”; é um Syntax Sugar para [carro setModelo: @”Fusca”];
  75. 75. Usando objetos Carro * carro = [[Carro alloc] init]; carro.modelo = @“Fusca”; NSString * modelo = carro.modelo; é um Syntax Sugar para [carro modelo];
  76. 76. Carro.h .... - (void) acelera; ...
  77. 77. Usando objetos Carro * carro = [[Carro alloc] init]; carro.modelo = @“Fusca”; NSString * modelo = carro.modelo; carro.acelera
  78. 78. Usando objetos Carro * carro = [[Carro alloc] init]; carro.modelo = @“Fusca”; NSString * modelo = carro.modelo; carro.acelera
  79. 79. Usando objetos Carro * carro = [[Carro alloc] init]; carro.modelo = @“Fusca”; NSString * modelo = carro.modelo; [carro acelera];
  80. 80. Usando objetos Carro * carro = [[Carro alloc] init]; carro.modelo = @“Fusca”; NSString * modelo = carro.modelo; [carro acelera];
  81. 81. Oficina.h .... - (void) pintaCarro : (Carro *) carro comCor : (NSString *) cor; ...
  82. 82. Oficina.h Usando objetos - (void) pintaCarro : (Carro *) carro comCor : (NSString *) cor; Carro * carro = [[Carro alloc] init]; [carro setModelo: @”Fusca”]; [carro setAno: 1969]; Oficina * oficina =[[Oficina alloc]init] [oficina pintaCarro: carro comCor: @”Azul”]
  83. 83. Oficina.h Usando objetos - (void) pintaCarro : (Carro *) carro comCor : (NSString *) cor; Carro * carro = [[Carro alloc] init]; [carro setModelo: @”Fusca”]; [carro setAno: 1969]; O nome do método é: pintaCarro:comCor: Oficina * oficina =[[Oficina alloc]init] [oficina pintaCarro: carro comCor: @”Azul”]
  84. 84. iOS //desde 2007 uma versão por ano C for(int ano = 2007, versao =1; ano < 2013; ano ++, versao ++){ NSLog(@”No ano %d foi lançado a versão %d”, ano, versao); } ObjC
  85. 85. iOS classe //devices que rodam sobre o iOS NSArray * devices = [ [NSArray arrayWithObjects: @”iPhone”, @”iPad”, @”iPod Touch”, @”Apple TV”, nil ] ]; int quantidade = [ [devices count ] ]; NSLog(@”%d”, quantidade);      método de instância método de classe
  86. 86. iOS MVC Controller Model View
  87. 87. iOS MVC Controller -- --- --- --Model -- --- --- --- View
  88. 88. iOS MVC Controller -- --- --- --Model -- --- --- --- View
  89. 89. iOS MVC Controller -- --- --- --Model Outlet ---- --- --- View
  90. 90. iOS MVC Controller -- --- --- --Model -Outlet ---- Action ---View
  91. 91. LIVE CODE!!!
  92. 92. E agora?
  93. 93. http:/ /www.caelum.com.br/curso-ios-iphone-ipad/
  94. 94. https:/ /developer.apple.com/programs/ios/
  95. 95. Obrigado! @fabiopimentel

×