
Olá pessoal. Vamos agora para a segunda parte sobre interação no iPhone. Vamos também iniciar agora com tutoriais em video para melhorar a dinâmica de aprendizagem. Vamos lá..
Bom, continuando a aula anterior vamos explicar aqui pra que serve a declaração @property.
Se você trabalha com o Objective-C 2.0, você provavelmente está familiarizado com a declaração @property, mas se não está, esta linha de código pode intimidar. Não tema: Propriedades no Objective-C são realmente simples. Deixe me pegar o rápido desvio, pois essa decoração vai ser usada constantemente nesse curso.
Propriedades no Objective-C
Antes da declaração @property ter sido somada no Objective-C, programadores tradicionalmente definiam pares de métodos para atribuir e recuperar valores de cada variável de uma estância de classe. Esses métodos são chamadas de acessors e mutators. (Ou se preferir, getters e setters) e podem se parecer com isso:
- (id) foo
{
return foo:
}
- (void) setFoo: (id) _foo
{
if (_foo != foo)
{
[_foo retain];
[foo release];
foo = _foo;
}
}
Sendo esta representação perfeitamente válida, a declaração @property permite que você diga adeus ao tedioso processo de criação de métodos acessors e mutators, se você quiser. O @property não trabalha sozinha, combinado com outra declaração no arquivo de implementação (@synthesize), que você deve ver em alguns instantes, dirão ao compilador para criar os métodos getter e setter em tempo de compilação.
Você deve ter que declarar uma variável de instancia como foi feito aqui, mas você não precisa definir o accessor e o mutator.
Em nossa declaração, o @ property chamar alguns atributos opcionais, separado por parêntese. Este ponto define como os acessors e mutators serão criados pelo compilador. Os dois que você verá aqui serão usados quando definirmos as propriedades na aplicação do iPhone.
@property (retain, nonatomic) UILabel *statusText;
O primeiro dos atributos, retain, diz ao compilador para enviar uma mensagem retain para o objeto que está assinando a propriedade. Este irá deixar a variável de instância com um marcação para ser acessado diretamente da memória quando nós precisamos dele. Isto é necessário por causa do comportamento padrão (assign) que é concebido para ser usado com a coleção Garbage, um recurso do Objective-C que atualmente não está implementado no iPhoneOS. Como resultado, se você definir uma propriedade que é um objeto (como um inteiro), você deverá gerar um retain especifico no atributo opcional. Colocando um “@property (retain” ao declarar a propriedade para um int, float, o outro tipo de dado raw, você não precisará especificar nenhum atributo opcional.
O segundo dos nossos atributos opcionais, nonatomic, muda a forma que os métodos acessors e mutators são gerados. Sem ser muito técnico, apenas deixe-me dizer que, por padrão, esses métodos são criados com algum código adicional que auxilia quando estiver escrevendo programas multitarefas (que não é feito atualmente no iPhone). Este código adicional, embora pequeno, é desnecessário quando estiver declarando um ponteiro para um objeto de interface com usuário então nós declaramos nonatomic para salvar um pouco de ciclos do processador. Haverá vezes que você não vai querer especificar um nonatomic para uma propriedade. Como regra geral, você irá especificar esse atributo na maioria das vezes que estiver escrevendo aplicações iPhone.
Propriedades no Objetive-C tem outro recurso legal. Eles introduzem ao uso de notação de ponto para a linguagem. Tradicionalmente, para usar um método accessor, você deve enviar uma mensagem para o objeto, como esta:
myVar = [algumObjeto foo];
Esta abordagem irá trabalhar corretamente. Mas quando você definir uma propriedade, você também tem a opção de usar a notação de ponto, similar ao que é usado em Java, C++ e C#, desta forma:
myVar = algumObjeto.foo;
Essas duas representações são idênticas para compilador. Use aqui te deixar mais feliz . Notação de ponto também trabalha com mutator:
algumObjeto.foo = myVar;
É idêntico a:
[algumObjeto setFoo: myVar];
Somando Actions e Outlets para o arquivo implamatation
Depois de termos alterado nosso cabeçalho da classe controller, salve-o e de apenas um cliente no arquivo de classe de implementação, Button_FunViewController.m
Neste ponto acho melhor vermos o vídeo que fiz para termos um entendimento maior, OK?
Abaixo segue o código do arquivo button_FanViewController.m depois de alterado:
#import “button_FunViewController.h”@ implementation button_FunViewController;@synthesize statusText;
- ( IBAction ) buttonPressed: (id) sender
{
NSString *title = [sender titleForState:UIControlStateNormal];
NSString *newText = [[NSString alloc] initWithFormat: @”O botão %@ foi pressionado!”, title];
statusText.text = newText;
[newText release];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning]; // Releases the view if it doesn’t have a superview
// Release anything that’s not essential, such as cached data
}
- (void)dealloc {
[statusText release];
[super dealloc];
}
@end
Espero que tenham gostado. No próximo capítulo vamos fazer uma aplicação mais complexa. Explicarei também cada componente da Biblioteca gráfica do IB. Até lá...
Autor: webclaudio.wordpress.com


15:04
Marcell C. Ribeiro



















0 comentários:
Postar um comentário