Objective-C
Sumário1.    Introdução...........................................................................................032.    ...
Introdução.h   Header Files.m   Implementation                           3
DiretivasSimilar ao include do C.#import < Foundation/Foundation.h >Usado para importação de Framework#import “SomeClass.h...
Classes• Declarar Interface (arquivo.h)@interface SomeClass : NSObject { }                         Herança                ...
Classes• Implementar (arquivo.m)#import “SomeClass.h”@interface SomeClass ()@end@implemantation SomeClass     ...@end     ...
Classes     Para referenciar outra classe em um arquivo é necessário importar o header.//SomeClass.h#import “AnotherClass....
Classes• Errado! Compilador entra em loop//SomeClass.h                // AnotherClass.h#import “AnotherClass.h”     #impor...
Classes• Certo   Declaração de Foward//SomeClass.h                // AnotherClass.h@class AnotherClass;         @class Som...
InstânciasÉ necessário usar o * antes do nome dasvariáveis. Exceto para os tipos primitivos.Ex:int number;SomeClass *objec...
InstânciasAloca memória para o objeto e retorna ele parauma variável do tipo da classe.SomeClass *someClass = [SomeClass a...
InstânciasUma opção ao * é o idEx.:id number;id someClass = [SomeClass alloc];                                    12
Fields//SomeClass.h#import <Framework>@class Another Class;@interface SomeClass{       AnotheClass *anotherClass;       fl...
Privilégios de Acesso@protected (default)@public@privateEx.:@public NSString *name                                 14
Privilégios de AcessoAcessar atributos das classes:someClass -> rate = 5someClass -> @”Wei-Meng Lee”;                     ...
Métodos / Funções( - ) Métodos da Instância( + ) Métodos Státicos Não precisam da classe instânciada                      ...
Métodos / Funções• Declaração das funções//SomeClass.h...@interface SomeClass{         <fields>}+ (void) doSomething;- (vo...
Métodos / Funções• Implementação dos métodos declarados//SomeClass.m@interface SomeClass()@end@implementation SomeClass+ (...
Mensagens• Métodos não são chamados. Mensagens são  enviadas a eles.Ex.:[SomeClass doSomething] static methodSomeClass *ob...
Mensagens• Opção: Alocar classe e chamar o método ao  mesmo tempo.Não usar uma linha só com mais de 3 ações para não dific...
Propriedades / Encapsulamento• Propriedades permitem a você expor os  campos de sua classe, assim você pode  controlar com...
Propriedades / Encapsulamento//SomeClass.h<imports>@interface SomeClass{       <fields>}- (float) rate;                   ...
Propriedades / Encapsulamento//SomeClass.m                                                  Para tornar as propriedades- (...
Propriedades / Encapsulamento//SomeClass.h                                       O @property gera automaticamente         ...
Propriedades / Encapsulamento//SomeClass.m...@implementation SomeClass@synthesize rate;@synthesize name;...@end           ...
Propriedades / Encapsulamento• Acessando as properties[obj setRate:5.0f];obj.rate = 5;                            Accessor...
Initializers / Construtores• Inicializar o objetoSomeClass *obj = [[SomeClass alloc] init];                               ...
Initializers / Construtores• Para criar diversos inicializadores é  necessários definir no header.- (id) initWithName: (NS...
Initializers / Construtores• Implementação- (id) initWithName: (NSString *) n andRate: (float) r {        self.name = n;  ...
Initializers / Construtores• Instânciar e InicializarSomeClass *obj [[SomeClass alloc]                    initWithName:@”H...
GERENCIAMENTO DE MEMÓRIA                           31
Gerenciamento de Memória• Garbage Colletor: Remove objetos que não estão  sendo mais utilizados liberando memória.Até o IO...
Reference Counting• R.F é um contador para cada objeto.+1 -> Quando o objeto é criado (alloc, new ou retain)-1 -> Quando o...
Reference Counting• Ex.:NSString *str = [[NSString alloc] init];   +1ouNSString *str = [[NSString new];           +1NSStri...
Autorelease• Também conhecido como Convenience Method• São objetos cujo dono não é você. Tem o  release feito automaticame...
Autorelease                        Convenience MethodNSString *str [[NSString format:@”%d”, 2] retain];[str autorelease]; ...
Autorelease Pools• Para Controlar como os Autoreleases Pool  são esvaziados, ao invés de esperar o SO, você  pode criar e ...
Autorelease Pools• Os objetos str1 e str2 são criados são  controlados pelo pool. Qualdo o pool é liberado  os objetos tam...
Dealloc• Muitas vezes os valores das propriedades ficam  retidos devido ao uso da diretiva @property  juntamente com o ret...
REFERÊNCIAW-M. Lee. Beginning iOS 4 application development. Wrox 2010.Appendix D, p.591-611.                             ...
Upcoming SlideShare
Loading in...5
×

Objective-C

894

Published on

Guia de consulta para o desenvolvimento com a liguagem Objective-C

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
894
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
54
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Objective-C

  1. 1. Objective-C
  2. 2. Sumário1. Introdução...........................................................................................032. Diretivas..............................................................................................043. Classes.................................................................................................054. Instâncias............................................................................................105. Fields...................................................................................................136. Privilégios de Acesso...........................................................................147. Métodos/Funções...............................................................................168. Mensagens..........................................................................................199. Propriedades/Encapsulamento..........................................................2110. Initializers / Construtores....................................................................2711. Gerenciamento de Memória..............................................................3112. Reference Counting.............................................................................3313. Autorelease.........................................................................................3514. Dealoc.................................................................................................3915. Referência ..........................................................................................40
  3. 3. Introdução.h Header Files.m Implementation 3
  4. 4. DiretivasSimilar ao include do C.#import < Foundation/Foundation.h >Usado para importação de Framework#import “SomeClass.h”Usado para importação de arquivo dentro do projeto. 4
  5. 5. Classes• Declarar Interface (arquivo.h)@interface SomeClass : NSObject { } Herança 5
  6. 6. Classes• Implementar (arquivo.m)#import “SomeClass.h”@interface SomeClass ()@end@implemantation SomeClass ...@end 6
  7. 7. Classes Para referenciar outra classe em um arquivo é necessário importar o header.//SomeClass.h#import “AnotherClass.h”@interface SomeClass : Herança AnotherClass *anotherClass;@end 7
  8. 8. Classes• Errado! Compilador entra em loop//SomeClass.h // AnotherClass.h#import “AnotherClass.h” #import “SomeClass .h”@interface SomeClass @interface AnotherClass AnotherClass *anotherClass; SomeClass *someClass;@end @end 8
  9. 9. Classes• Certo Declaração de Foward//SomeClass.h // AnotherClass.h@class AnotherClass; @class SomeClass;@interface SomeClass @interface AnotherClass AnotherClass *anotherClass; SomeClass *someClass;@end @end 9
  10. 10. InstânciasÉ necessário usar o * antes do nome dasvariáveis. Exceto para os tipos primitivos.Ex:int number;SomeClass *object; 10
  11. 11. InstânciasAloca memória para o objeto e retorna ele parauma variável do tipo da classe.SomeClass *someClass = [SomeClass alloc]; 11
  12. 12. InstânciasUma opção ao * é o idEx.:id number;id someClass = [SomeClass alloc]; 12
  13. 13. Fields//SomeClass.h#import <Framework>@class Another Class;@interface SomeClass{ AnotheClass *anotherClass; float rate; NSString *name;}@end 13
  14. 14. Privilégios de Acesso@protected (default)@public@privateEx.:@public NSString *name 14
  15. 15. Privilégios de AcessoAcessar atributos das classes:someClass -> rate = 5someClass -> @”Wei-Meng Lee”; 15
  16. 16. Métodos / Funções( - ) Métodos da Instância( + ) Métodos Státicos Não precisam da classe instânciada 16
  17. 17. Métodos / Funções• Declaração das funções//SomeClass.h...@interface SomeClass{ <fields>}+ (void) doSomething;- (void) doThing: (NSString*) str;- (void) doThing: (NSString*) str AnotherPara: (float) value;@end 17
  18. 18. Métodos / Funções• Implementação dos métodos declarados//SomeClass.m@interface SomeClass()@end@implementation SomeClass+ (void) doSomething{ <implementation...>}@end 18
  19. 19. Mensagens• Métodos não são chamados. Mensagens são enviadas a eles.Ex.:[SomeClass doSomething] static methodSomeClass *object;[object doThing:@”Text”];[object doThing:@”Text” AnotherPara:9.0f]; 19
  20. 20. Mensagens• Opção: Alocar classe e chamar o método ao mesmo tempo.Não usar uma linha só com mais de 3 ações para não dificultar o entendimento do código.NSString *str = [[NSString alloc] initWithString:@”Hello”];Init funciona como método construtor. 20
  21. 21. Propriedades / Encapsulamento• Propriedades permitem a você expor os campos de sua classe, assim você pode controlar como os valores são definidos e retornados. GETTERS & SETTERS ACCESSORS & MUTATORS 21
  22. 22. Propriedades / Encapsulamento//SomeClass.h<imports>@interface SomeClass{ <fields>}- (float) rate; get- (void) setRate: (float) value; set- (NSString *) name; get- (void) setName: (NSString *) value; set<methods>@end 22
  23. 23. Propriedades / Encapsulamento//SomeClass.m Para tornar as propriedades- (float) rate{ Readonly, remover os métodos set return rate;}- (void) setRate: (float) value{ rate = value;}- (NSString *) name{ return name;}- (void) setName: (NSString *) value{ [value retain]; Gerenciamento de memória [name release]; name = value;} 23
  24. 24. Propriedades / Encapsulamento//SomeClass.h O @property gera automaticamente os acessors e mutattors<imports>@interface SomeClass{ <fields>}@property float rate;@property (retain, nonatomic) NSString *name;nonatomic = não pode ser acessado no modo thread.@property (readonly) NSString *str;<methods>@end 24
  25. 25. Propriedades / Encapsulamento//SomeClass.m...@implementation SomeClass@synthesize rate;@synthesize name;...@end 25
  26. 26. Propriedades / Encapsulamento• Acessando as properties[obj setRate:5.0f];obj.rate = 5; Accessors[obj setName:@”Hi”];obj.name = @”Hi”;NSLog([sc name]); MutatorsNSLog(sc.name); 26
  27. 27. Initializers / Construtores• Inicializar o objetoSomeClass *obj = [[SomeClass alloc] init]; 27
  28. 28. Initializers / Construtores• Para criar diversos inicializadores é necessários definir no header.- (id) initWithName: (NSString *) n;- (id) initWithName: (NSString *) n andRate: (float) r; 28
  29. 29. Initializers / Construtores• Implementação- (id) initWithName: (NSString *) n andRate: (float) r { self.name = n; self.rate = r; return self;}- (id) initWithName: (NSString *) n { return [self initWithName: n andRate:0.0f];} 29
  30. 30. Initializers / Construtores• Instânciar e InicializarSomeClass *obj [[SomeClass alloc] initWithName:@”Hello”]; 30
  31. 31. GERENCIAMENTO DE MEMÓRIA 31
  32. 32. Gerenciamento de Memória• Garbage Colletor: Remove objetos que não estão sendo mais utilizados liberando memória.Até o IOS 4.0 não havia suporte ao G.C. Então odesenvolvedor precisava manualmente alocar edesalocar a memória dos objetos que não são maisutilizados. 32
  33. 33. Reference Counting• R.F é um contador para cada objeto.+1 -> Quando o objeto é criado (alloc, new ou retain)-1 -> Quando o objeto é desalocado (release)Quando o contador chega a 0(Zero), a memóriaassociada é liberada para o SO. 33
  34. 34. Reference Counting• Ex.:NSString *str = [[NSString alloc] init]; +1ouNSString *str = [[NSString new]; +1NSString *str2 = str;[str2 retain]; //get ownership +1[str release]; -1[str2 release]; -1 34
  35. 35. Autorelease• Também conhecido como Convenience Method• São objetos cujo dono não é você. Tem o release feito automaticamente após um tempo. 35
  36. 36. Autorelease Convenience MethodNSString *str [[NSString format:@”%d”, 2] retain];[str autorelease]; //Retira propriedadeNSLog(str); //Continua acessível Uma vez dado o autorelease não é mais possível fazer release. 36
  37. 37. Autorelease Pools• Para Controlar como os Autoreleases Pool são esvaziados, ao invés de esperar o SO, você pode criar e gerenciar instâncias de pools. 37
  38. 38. Autorelease Pools• Os objetos str1 e str2 são criados são controlados pelo pool. Qualdo o pool é liberado os objetos também são.NSAutoreleasePool *pool [[NSAutoreleasePool alloc] init]NSString *str1 = @”Hi”;NSString *str2 = @”Hello”;[pool release]; 38
  39. 39. Dealloc• Muitas vezes os valores das propriedades ficam retidos devido ao uso da diretiva @property juntamente com o retain. No método dealoc liberamos a memória.- (void) dealoc { [self.name release]; [super dealloc];}O dealoc é sempre chamado quando a contagem de referências chega a zero. 39
  40. 40. REFERÊNCIAW-M. Lee. Beginning iOS 4 application development. Wrox 2010.Appendix D, p.591-611. 40
  1. A particular slide catching your eye?

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

×