Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to Object

Introduction to Object

An introductory talk about Objective-C. PT-BR

Gustavo Barbosa

January 16, 2013
Tweet

More Decks by Gustavo Barbosa

Other Decks in Programming

Transcript

  1. Overview Oriunda do C e do Smalltalk Linguagem da NeXT

    para o NeXTSTEP OS Orientado à objetos Tipada Thursday, June 13, 13
  2. @property Objeto que nada mais é que uma propriedade de

    uma classe e que possui um getter e um setter. Definição @property (nonatomic, strong) NSString *name; @property (nonatomic) int age; Thursday, June 13, 13
  3. @property @synthesize @implementation Ship @synthesize name = _name; @synthesize age

    = _age; / / ... implemetações dos métodos - (BOOL)takeOff { / / ... } @end Thursday, June 13, 13
  4. @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!) } @end Thursday, June 13, 13
  5. Dot Notation dado 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
  6. strong vs weak strong matenha esse cara na heap até

    eu não apontar mais pra ele weak matenha enquanto alguém apontar pra ele “strongly” Thursday, June 13, 13
  7. nil É o valor de um objeto que não aponta

    para nada id obj = nil; NSString *hello = nil; É como o “zero” para um tipo primitivo Pode ser testado num if if (obj) { ... } Pode enviar mensagens para nil (na maioria das vezes é ok) int i = [obj metodoQueRetornaUmInteiro] // se obj é nil, i = 0 Thursday, June 13, 13
  8. BOOL typedef para o tipo boolean em Objective-C if (flag)

    { ... } if (!flag) { ... } YES e NO if (flag == YES) { ... } if (flag != NO) { ... } Thursday, June 13, 13
  9. Instance vs class methods de instância: definidos com um “-”

    - (BOOL)dropBomb:(Bomb *)bomb at:(CGPoint)position from:(double)altitude; de classe: definidos com um “+” + (Ship *)motherShip; Thursday, June 13, 13
  10. Instance vs class methods de instância Ship *ship = [[Ship

    alloc] init]; BOOL destroyed = [ship dropBomb:bomb1 at:dropPoint from:300.0]; de classe Ship *motherShip = [Ship motherShip]; Thursday, June 13, 13
  11. Instance vs class methods de instância self/super é a instância

    sendo chamada de classe self/super é a classe Thursday, June 13, 13
  12. Métodos Mais exemplos - (double)performOperation:(NSString *)operation; - (NSMutableArray *)operandStack; -

    (NSString *)stringByAppendingString:(NSString *)s; - (void)doSomething; - (NSComparisonResult)compare:(NSString *)aString options:(Options)mask mask:(NSRange)range; Thursday, June 13, 13
  13. Instâncias alloc & init NSMutableArray *stack = [[NSMutableArray alloc] init];

    alloc é um método de class init é o construtor base Thursday, June 13, 13
  14. Instâncias Criando seu próprio init @implementation MyObject - (id)init {

    self = [super init]; if (self) { / / custom stuff } return self; } @end Thursday, June 13, 13
  15. NSString Serve como o tipo (char *) do C Representada

    por @”minha string” NSString *minhaString = @”minha string”; Imutável Thursday, June 13, 13
  16. NSMutableString Mutável :) Porém raramente usada. Em geral, a instância

    de NSString é liberada no final do escopo - (void)fazAlgumaCoisa { NSString *minhaString = @”minha string”; ... } / / minhaString foi “released” Thursday, June 13, 13
  17. NSArray Coleção ordenada de objetos Imutá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
  18. NSMutableArray Mutável :) Possui todos os métodos de NSArray Mais

    pesado NSMutableArray *array = @[@”Fla”, @“Flu”, @“Vasco”, @“Botafogo”]; [array addObject:@”Friburguense”]; [array removeLastObject]; [array insertObject:meuObjeto atIndex:3]; array[1] = @”Madureira”; Thursday, June 13, 13
  19. NSDictionary Mapeamento chave-valor Imutável NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:

    27], @”idade”, nil]; NSDictionary *dict = @{ @”idade”: @27 }; Thursday, June 13, 13
  20. NSMutableDictionary Mutável :) NSMutableDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:27],

    @”idade”, nil]; [dict setObject:@”Gustavo” forKey:@”nome”]; dict[@”nome”] = @”Gustavo”; Thursday, June 13, 13