Your SlideShare is downloading. ×
Introdução ao Objective-C
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Introdução ao Objective-C

462
views

Published on

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
462
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
35
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Introdução aoObjective-CThursday, June 13, 13
  • 2. OverviewOriunda do C e do SmalltalkLinguagem da NeXT para o NeXTSTEP OSOrientado à objetosTipadaThursday, June 13, 13
  • 3. Thursday, June 13, 13
  • 4. a linguagemThursday, June 13, 13
  • 5. non-ARC vs ARCAutomatic Reference CountingThursday, June 13, 13
  • 6. Interfaces (.h) andImplementations (.m)Thursday, June 13, 13
  • 7. Interfaces (.h)Thursday, June 13, 13
  • 8. Implementations (.m)Thursday, June 13, 13
  • 9. @propertyObjeto que nada mais é que uma propriedadede uma classe e que possui um getter e umsetter.Definição@property (nonatomic, strong) NSString *name;@property (nonatomic) int age;Thursday, June 13, 13
  • 10. @property@synthesize@implementation Ship@synthesize name = _name;@synthesize age = _age;// ... implemetações dos métodos- (BOOL)takeOff{// ...}@endThursday, June 13, 13
  • 11. @property@synthesize name = _name é o mesmo que:@implementation Ship// ... implemetações dos métodos- (BOOL)takeOff{// ...}- (NSString *)name{return _name; // ou self.name (cuidado!)}- (void)setName:(NSString *)name{_name = name; // ou self.name = name (cuidado!)}@endThursday, June 13, 13
  • 12. Dot Notationdado o objeto...@interface Ship@property (nonatomic, strong) NSString *name;@property (nonatomic) int width;@end...podemos acessar suas properties:Ship *ship = [[Ship alloc] init];ship.name = @”Nave da Xuxa”;ship.width = 50;NSLog(@”%@ tem %d metros de largura”, ship.name, ship.width);Thursday, June 13, 13
  • 13. strong vs weakstrongmatenha esse cara na heap até eu nãoapontar mais pra eleweakmatenha enquanto alguém apontar pra ele“strongly”Thursday, June 13, 13
  • 14. tipos primitivosHerda os tipos primitivos do CintfloatcharbooleanThursday, June 13, 13
  • 15. nilÉ o valor de um objeto que não aponta paranadaid obj = nil;NSString *hello = nil;É como o “zero” para um tipo primitivoPode ser testado num ifif (obj) { ... }Pode enviar mensagens para nil (na maioriadas vezes é ok)int i = [obj metodoQueRetornaUmInteiro]// se obj é nil, i = 0Thursday, June 13, 13
  • 16. BOOLtypedef para o tipo boolean em Objective-Cif (flag) { ... }if (!flag) { ... }YES e NOif (flag == YES) { ... }if (flag != NO) { ... }Thursday, June 13, 13
  • 17. Instance vs classmethodsde instância: definidos com um “-”- (BOOL)dropBomb:(Bomb *)bombat:(CGPoint)positionfrom:(double)altitude;de classe: definidos com um “+”+ (Ship *)motherShip;Thursday, June 13, 13
  • 18. Instance vs classmethodsde instânciaShip *ship = [[Ship alloc] init];BOOL destroyed = [ship dropBomb:bomb1 at:dropPoint from:300.0];de classeShip *motherShip = [Ship motherShip];Thursday, June 13, 13
  • 19. Instance vs classmethodsde instânciaself/super é a instância sendo chamadade classeself/super é a classeThursday, June 13, 13
  • 20. MétodosMais exemplos- (double)performOperation:(NSString *)operation;- (NSMutableArray *)operandStack;- (NSString *)stringByAppendingString:(NSString *)s;- (void)doSomething;- (NSComparisonResult)compare:(NSString *)aStringoptions:(Options)maskmask:(NSRange)range;Thursday, June 13, 13
  • 21. Instânciasalloc & initNSMutableArray *stack = [[NSMutableArray alloc] init];alloc é um método de classinit é o construtor baseThursday, June 13, 13
  • 22. InstânciasCriando seu próprio init@implementation MyObject- (id)init{self = [super init];if (self) {// custom stuff}return self;}@endThursday, June 13, 13
  • 23. Foundation FrameworkThursday, June 13, 13
  • 24. NSObject- (NSString *)description;- (id)copy;- (id)mutableCopy;Thursday, June 13, 13
  • 25. NSStringServe como o tipo (char *) do CRepresentada por @”minha string”NSString *minhaString = @”minha string”;ImutávelThursday, June 13, 13
  • 26. NSMutableStringMutável :)Porém raramente usada. Em geral, a instânciade NSString é liberada no final do escopo- (void)fazAlgumaCoisa{NSString *minhaString = @”minha string”;...} // minhaString foi “released”Thursday, June 13, 13
  • 27. NSArrayColeção ordenada de objetosImutável (não consigo adicionar/remover objetos)Pq é bom? Mais leve.NSArray *meuArray = [[NSArray alloc] init];NSArray *outroArray = [NSArray arrayWithObjects:@”Flamengo”, @”Vasco”, @“Botafogo”, @”Fluminense”, nil];NSArray *array = @[@”Fla”, @“Flu”, @“Vasco”, @“Botafogo”];Thursday, June 13, 13
  • 28. NSMutableArrayMutável :)Possui todos os métodos de NSArrayMais pesadoNSMutableArray *array = @[@”Fla”, @“Flu”, @“Vasco”,@“Botafogo”];[array addObject:@”Friburguense”];[array removeLastObject];[array insertObject:meuObjeto atIndex:3];array[1] = @”Madureira”;Thursday, June 13, 13
  • 29. NSDictionaryMapeamento chave-valorImutávelNSDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:[NSNumber numberWithInt:27], @”idade”, nil];NSDictionary *dict = @{@”idade”: @27};Thursday, June 13, 13
  • 30. NSMutableDictionaryMutável :)NSMutableDictionary *dict = [NSDictionarydictionaryWithObjectsAndKeys:[NSNumber numberWithInt:27], @”idade”,nil];[dict setObject:@”Gustavo” forKey:@”nome”];dict[@”nome”] = @”Gustavo”;Thursday, June 13, 13
  • 31. Outras classesNSSet / NSMutableSetNSOrderedSet / NSMutableOrderedSetNSNumberNSValueNSDataNSDateThursday, June 13, 13
  • 32. NSObrigadoThursday, June 13, 13