Your SlideShare is downloading. ×
0
O que você precisa para
começar no iOS e
Objective-C
Quem sou eu?
@fabiopimentel
* Desenvolvedor Java, Ruby, Android e iOS
* Instrutor Java, Ruby, Android e iOS
* github.com/f...
Por que uma palestra para
iniciante?
* Objective-C?
* Difícil de começar? Novidade(2007)!
* Alta procura por desenvolvedor...
Porque desenvolver para
iOS?
“At Apple’s Worldwide Developer’s Conference in San Francisco today,
Apple CEO Tim Cook revealed that since 2008, Apple ha...
http:/
/www.forbes.com/sites/tristanlouis/2013/08/10/how-much-do-average-apps-make/
http:/
/www.forbes.com/sites/tristanlouis/2013/08/10/how-much-do-average-apps-make/
O que você precisa?
Lógica de programação
Conhecimentos de Orientação de Objetos
Saber pesquisar no Stack Overflow, Google
E agora?

XCode
Mas eu não tenho Mac!
Vamos programar?
Objective-C (OFICIAL)
Ruby - RubyMotion

C# - Xamarin
Objective-C
C (1972)
C++
(1985)

ObjC
(1986)

Smalltalk
(1980)
Objective-C
C (1972)
C++
(1985)

ObjC
(1986)

Smalltalk
(1980)
Brad Cox

http://virtualschool.edu/cox/

1986
História
76
História
76

85
Ainda em 85 ...
Next Computer
Sistema Operacional NextStep
Next Computer
Sistema Operacional NextStep
Unix Like (Unix BSD)
Conceito de Dock
Next Computer
Sistema Operacional NextStep
Unix Like (Unix BSD)
Origem do Dock
Conceitos de GUI
Next Computer
Sistema Operacional NextStep
Unix Like (Unix BSD)
Origem do Dock
Conceitos de GUI
Primeiro navegador web
Next Computer
Sistema Operacional NextStep
Unix Like (Unix BSD)
Origem do Dock
Conceitos de GUI
Primeiro navegador web
Obj...
História
76

85

86
História
76

85

86

96
e junto comigo ....

Project Builder
Project Builder

XCode
e junto comigo ....

Interface
Builder

XCode
Sho
wm
co d e the
e! ! !
Declaração de classes
Declaração de classes
Header File (.h) -> Declaração
Implementation File (.m) -> Implementação
Declaração de classes
Carro.h
#import <Foundation/Foundation.h>
@interface Carro

@end
Declaração de classes
Carro.h

supertipo

#import <Foundation/Foundation.h>
@interface Carro : NSObject

@end
Declaração de classes
Carro.h
#import <Foundation/Foundation.h>
@interface Carro : NSObject
{
atributos
NSString * modelo;...
Declaração de classes
Carro.h
#import <Foundation/Foundation.h>
@interface Carro : NSObject
{
atributos
NSString * modelo;...
Declaração de métodos
Declaração de métodos
Método de instância ->
Método de classe ->

+

-
Declaração de métodos
Método de instância ->
Método de classe ->

- (void)
retorno

+

-
Declaração de métodos
Método de instância ->
Método de classe ->

-

+

- (void) acelera;
nome
Declaração de métodos
Método de instância ->
Método de classe ->

- (void) acelera;
- (void) pintaCarro :
recebe parâmetro...
Declaração de métodos
Método de instância ->
Método de classe ->

-

+

- (void) acelera;
- (void) pintaCarro : (Carro *)
...
Declaração de métodos
Método de instância ->
Método de classe ->

+

nome do parâmetro

- (void) acelera;
- (void) pintaCa...
Declaração de métodos
Método de instância ->
Método de classe ->
- (void) acelera;

-

+
ainda nome do método

- (void) pi...
Declaração de métodos
Método de instância ->
Método de classe ->

-

+

- (void) acelera;

tipo do parâmetro

- (void) pin...
Declaração de métodos
Método de instância ->
Método de classe ->

-

+

- (void) acelera;

nome do parâmetro

- (void) pin...
Declaração de métodos
Método de instância ->
Método de classe ->

-

+

- (void) acelera;
- (void) pintaCarro : (Carro *) ...
Declaração de classes
Carro.h
#import <Foundation/Foundation.h>
@interface Carro : NSObject
{
NSString * modelo;
int ano;
...
Mas o que os métodos
fazem?
São dois arquivos,
lembra?
Header File (.h) -> Declaração
Implementation File (.m) -> Implementação
São dois arquivos
lembra?
Header File (.h) -> Declaração OK
Implementation File (.m) -> Implementação
Declaração de classes
Carro.m
#import “Carro.h”
@implementation Carro
-(void) setModelo: (NSString *) modelo
{
self.modelo...
Declaração de classes
Carro.m
#import “Carro.h”
@implementation Carro
-(void) setModelo: (NSString *) modelo
{
self.modelo...
Declaração de classes
Carro.m

#import “Carro.h”
@implementation Carro
-(void) setModelo: (NSString *) modelo
{
self.model...
Declaração de classes
Carro.m

#import “Carro.h”
@implementation Carro
-(void) setModelo: (NSString *) modelo
{
self.model...
Declaração de classes
Carro.m

#import “Carro.h”
@implementation Carro
-(void) setModelo: (NSString *) modelo
{
self.model...
Vamos voltar ....
Declaração de classes
Carro.h
#import <Foundation/Foundation.h>
@interface Carro : NSObject
{
NSString * modelo;
int ano;
...
Declaração de classes
Carro.h

Carro.m
#import “Carro.h”
@implementation Carro

#import <Foundation/Foundation.h>
@interfa...
Mais sobre propriedades...
@property ( nonatomic, strong ) NSString * modelo;

x

atomic

x

weak

x

assing
Mais sobre propriedades...
@property ( nonatomic, strong ) NSString * modelo;

x

x

weak

atomic

x

assing

Acesso conco...
Mais sobre propriedades...
@property ( nonatomic, strong ) NSString * modelo;

x

atomic

x

weak

x

assign

Gerenciament...
Mais sobre propriedades...
@property ( nonatomic, strong ) NSString * modelo;

x

atomic

x

weak

x

assign

Gerenciament...
Declaração de classes
Carro.h

Carro.m
#import “Carro.h”
@implementation Carro

#import <Foundation/Foundation.h>
@interfa...
Declaração de classes
Carro.m

Carro.h
#import <Foundation/Foundation.h>
@interface Carro : NSObject

#import “Carro.h”
@i...
Criando objetos
Carro alloc

Método de classe (+)
Criando objetos
[Carro alloc]

Chamada de
método entre
colchetes
Criando objetos
[Carro alloc] init

Método de instância (-)
Criando objetos
[[Carro alloc] init]

Chamada de
método entre
colchetes
Criando objetos
Carro * carro = [[Carro alloc] init];

Referência
Usando objetos
Carro * carro = [[Carro alloc] init];
[carro setModelo: @”Fusca”];

Chamada de
método! []
Usando objetos
Carro * carro = [[Carro alloc] init];
[carro setModelo: @”Fusca”];
NSString * modelo = [carro modelo];

mét...
MUITA ATENÇÃO!!!!!!!
MUITA ATENÇÃO!!!!!!!

ot
D
te
is
Ex
on
ti
ta
o
N
MUITA ATENÇÃO!!!!!!!

ra
pa
as
n
!!
e
s!
p
A
de
a
ed
ri
op
pr
Usando objetos
Carro * carro = [[Carro alloc] init];
carro.modelo = @“Fusca”;
é um Syntax Sugar para
[carro setModelo: @”F...
Usando objetos
Carro * carro = [[Carro alloc] init];
carro.modelo = @“Fusca”;
NSString * modelo = carro.modelo;
é um Synta...
Carro.h
....
- (void) acelera;
...
Usando objetos
Carro * carro = [[Carro alloc] init];
carro.modelo = @“Fusca”;
NSString * modelo = carro.modelo;
carro.acel...
Usando objetos
Carro * carro = [[Carro alloc] init];
carro.modelo = @“Fusca”;
NSString * modelo = carro.modelo;
carro.acel...
Usando objetos
Carro * carro = [[Carro alloc] init];
carro.modelo = @“Fusca”;
NSString * modelo = carro.modelo;
[carro ace...
Usando objetos
Carro * carro = [[Carro alloc] init];
carro.modelo = @“Fusca”;
NSString * modelo = carro.modelo;
[carro ace...
Oficina.h
....
- (void) pintaCarro : (Carro *) carro comCor : (NSString *) cor;
...
Oficina.h

Usando objetos

- (void) pintaCarro : (Carro *) carro comCor : (NSString *) cor;

Carro * carro = [[Carro alloc]...
Oficina.h

Usando objetos

- (void) pintaCarro : (Carro *) carro comCor : (NSString *) cor;

Carro * carro = [[Carro alloc]...
iOS
//desde 2007 uma versão por ano

C
for(int ano = 2007, versao =1; ano < 2013; ano ++, versao ++){
NSLog(@”No ano %d fo...
iOS
classe
//devices que rodam sobre o iOS
NSArray * devices = [
[NSArray arrayWithObjects: @”iPhone”,
@”iPad”, @”iPod Tou...
iOS MVC
Controller

Model

View
iOS MVC
Controller

--

---

---

--Model

--

---

---

---

View
iOS MVC
Controller

--

---

---

--Model

--

---

---

---

View
iOS MVC
Controller

--

---

---

--Model

Outlet ----

---

---

View
iOS MVC
Controller

--

---

---

--Model

-Outlet ----

Action
---View
LIVE CODE!!!
E agora?
http:/
/www.caelum.com.br/curso-ios-iphone-ipad/
https:/
/developer.apple.com/programs/ios/
Obrigado!
@fabiopimentel
O que você precisa para iniciar no iOS e Objective-C -
O que você precisa para iniciar no iOS e Objective-C -
O que você precisa para iniciar no iOS e Objective-C -
O que você precisa para iniciar no iOS e Objective-C -
O que você precisa para iniciar no iOS e Objective-C -
O que você precisa para iniciar no iOS e Objective-C -
O que você precisa para iniciar no iOS e Objective-C -
Upcoming SlideShare
Loading in...5
×

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

994

Published on

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

Published in: Technology
2 Comments
2 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
994
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
45
Comments
2
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×