Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
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.                             ...
Nächste SlideShare
Wird geladen in …5
×

Objective-C

1.106 Aufrufe

Veröffentlicht am

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

Veröffentlicht in: Bildung
  • Als Erste(r) kommentieren

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

×