O documento apresenta uma introdução à linguagem Objective-C, descrevendo suas origens, características como tipagem e orientação a objetos, e elementos fundamentais como interfaces, implementações, propriedades, tipos primitivos, instâncias, framework Foundation e classes como NSString, NSArray e NSDictionary.
9. @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
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!)
}
@end
Thursday, June 13, 13
12. 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
13. 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
15. 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
16. 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
17. 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
18. 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
19. Instance vs class
methods
de instância
self/super é a instância sendo chamada
de classe
self/super é a classe
Thursday, June 13, 13
21. Instâncias
alloc & init
NSMutableArray *stack = [[NSMutableArray alloc] init];
alloc é um método de class
init é o construtor base
Thursday, June 13, 13
22. 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
25. NSString
Serve como o tipo (char *) do C
Representada por @”minha string”
NSString *minhaString = @”minha string”;
Imutável
Thursday, June 13, 13
26. 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