-

@property, nonatomic e retain

Aprenda e contribua programando um aplicativo para o iPhone

@property, nonatomic e retain

Mensagempor alexanderferreira » 02 Mai 2011 15:45

Boa Tarde Pessoal,

Andei pesquisando sobre @property, nonatomic e retain, porém não consegui entender o que realmente eles fazem..... :(

Alguém poderia me explicar, por favor???

Muito Obrigado!!

Alex
alexanderferreira
Membro Master
Membro Master
 
Mensagens: 25
Data de registro: 21 Dez 2008 22:06

Pontos de agradecimentos:

1



Google

@property, nonatomic e retain

Mensagempor vrjanson » 02 Mai 2011 18:50

Você encontra isso e tudo mais no pdf: The Objective-C Programming
Language, que podemos baixar no site DEVELOPER da Apple...

http://developer.apple.com/devcenter/ios/index.action

É difícil explicar... Tem que usar...
Avatar de usuário
vrjanson
Membro Senior
Membro Senior
 
Mensagens: 83
Data de registro: 29 Dez 2007 07:24

Pontos de agradecimentos:

7

Modelo: iPhone 4 16Gb Preto



Desbloqueio: Oficial
Operadora: TIM
Acessórios: Firmware 5.0 Beta
Sistema Operacional: MAC OS X Lion

Re: @property, nonatomic e retain

Mensagempor raka » 10 Mai 2011 13:38

Cara, a documentação da Apple é bem completa

http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW1

se mesmo assim não ajudar, grita ae....mas pelo menos tente ler e entender!
raka
Membro
Membro
 
Mensagens: 4
Data de registro: 13 Mar 2011 01:22

Pontos de agradecimentos:

0

Sistema Operacional: Mac Os X

Re: @property, nonatomic e retain

Mensagempor alexanderferreira » 10 Mai 2011 13:42

Muito Obrigado pessoal,

Vou dar uma boa lida e qquer dúvida eu dou um post....

Valew!!!
alexanderferreira
Membro Master
Membro Master
 
Mensagens: 25
Data de registro: 21 Dez 2008 22:06

Pontos de agradecimentos:

1


Re: @property, nonatomic e retain

Mensagempor pierrefreire » 17 Mai 2011 22:13

Alex,

Como os colegas disseram, muito dificil explicar em um post, tem que dar uma olhada na documentação mesmo.

Mas para tentar pelo menos ilustrar rapidamente:

@property: Diz ao compilador que isto é uma propriedade e ajudará na criação automatica dos métodos getter e setter( se a propriedade não for apenas de leitura).

nonatomic e retain: São atributos da propriedade, isto muda de acordo, se for um objeto ou um tipo primitivo e tem outros atributos ainda como copy, readwrite, assign...
Mas entenda o property e depois conhecer os atributos ficará mais simples.


Só a titulo de exemplo, partindo do principio de Orientação a objetos, a CLASSE é formada de de atributos e métodos.
E geralmente os atributos devem ter os métodos acessores: ou seja os getters e setters.
A classe de exemplo tem apenas um atributo chamado Nome.

No exemplo 1, eu usei property no arquivo de cabeçalho .h e no .m eu usei apenas o @synthesize e o os métodos getter
e setter serão criado automaticamente.

No exemplo 2, eu não usei property no arquivo de cabeçalho e tive que declarar os métodos getter/setter e no .m
eu tive que codificar eles.

Imagina se minha classe tivesse vários atributos o que é normal e tivesse que escrever todos os getters e setters?
nome, populacao, cidade, uf.

Tem outros detalhes, mas espero que seja uma luz. Abaixo tem os exemplos eu nem cheguei a compilar no Xcode, mas
é por ai mesmo. Espero ter ajudado.


Exemplo 1. Um classe cidade usando propertyes

-------------- Arquivo cabecalho - Cidades.h -----------------------
#import <Foundation/Foundation.h>

@interface Cidade : NSObject {

NSString *nome;

}

@property (nonatomic, retain) NSString *nome;

@end
-----------------------------------------------------------------------------


-------------- Arquivo implementação ( Com uso do @property ) - Cidades.h -----------------------

#import "Cidade.h"
@implementation Cidade

// O synthesize abaixo cria automaticamentos os métodos getter e setter de nome, que serão chamados
// nome(getter) e setNome(setter)
@synthesize nome;


@end


***************************************************************************************



EXEMPLO 2. Um classe cidade sem usar propertyes

-------------- Arquivo cabecalho - Cidades.h -----------------------
#import <Foundation/Foundation.h>

@interface Cidade : NSObject {
NSString *nome;
}
-(NSString *) nome;
-(void) setNome: (NSString *) novoNome;

@end
-----------------------------------------------------------------------------


-------------- Arquivo implementação ( sem uso do @property ) - Cidades.h -----------------------

#import "Cidade.h"
@implementation Cidade

// Metodo getter implementado, já que não tem @propertyes
-(NSString *) nome {
return nome;
}

// Metodo setter implementado já que não tem @propertyes
-(void) setNome: (NSString *) novoNome {

if ( novoNome != nome ) {
[nome release]
nome = [novoNome retain];
}

}
@end
pierrefreire
Membro
Membro
 
Mensagens: 12
Data de registro: 17 Mai 2011 20:24
Localização: Natal/RN

Pontos de agradecimentos:

2

Modelo: iPad 3G 64Gb



Desbloqueio: Nenhum
Firmware: 4.3
Operadora: TIM
Sistema Operacional: Snow Leopard 10.6.6


Google


Retornar para Desenvolvimento de Aplicativos



Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 0 visitantes



Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.