Este post va dedicado a todos aquellos como yo, los cuales estamos familiarizandonos con iOS y nos cuesta un poquito entender las claúsulas atomic y nonatomic.
ATOMIC VS NONATOMIC
Vamos a entrar en el supuesto de que hacemos una clase clientes :
Clientes.h
Clientes.m
Entonces perdemos mucho tiempo implementando getters y setters con cada atributo de la clase, de todas maneras no hace falta hacerlo así, la clase ya sabe que esas propiedades(getters y setters) las tienen los atributos por defecto, en consecuencia al asignar la variable como a continuación, será suficiente.
Veamos como queda el archivo Clientes.h :
Y en el Clientes.m para usar el Get y Set
Diferencia entre atomic y nonatomic
Mediante la propiedad atomic hace que los metodos GET y SET sean "Safe-Thread", es decir que pone un semaforo a cada método para que no se pueda llamar al SET desde 2 hilos diferentes.
Si tus metodos GET y SET sólo dan y devuelven el atributo no es necesario ese control de Threads porque no va a dar errores, entonces en este caso, se usa nonatomic
ATOMIC VS NONATOMIC
Vamos a entrar en el supuesto de que hacemos una clase clientes :
Clientes.h
#import@interface Clientes{ NSString *id; NSString *nombre; NSString *direccion; }
Clientes.m
#import "Clientes.h" @implementation Clientes -(id) init { if( (self=[super init])) { //Inicialización } return self; } -(NSString*) getid{ return id; } -(void) setid:(NSString*) nuevoId{ id = nuevoId; } //... Y así PARA CADA PROPIEDAD @end
Entonces perdemos mucho tiempo implementando getters y setters con cada atributo de la clase, de todas maneras no hace falta hacerlo así, la clase ya sabe que esas propiedades(getters y setters) las tienen los atributos por defecto, en consecuencia al asignar la variable como a continuación, será suficiente.
Veamos como queda el archivo Clientes.h :
@interface Clientes{ @property (nonatomic) NSString* *id; @property (nonatomic) NSString* *nombre; @property (nonatomic) NSString* *direccion; }
Y en el Clientes.m para usar el Get y Set
@interface Clientes{ self.nombre = @"Arturo" ; // Setnombre int miedad = self.direccion; // getdireccion }
Diferencia entre atomic y nonatomic
Mediante la propiedad atomic hace que los metodos GET y SET sean "Safe-Thread", es decir que pone un semaforo a cada método para que no se pueda llamar al SET desde 2 hilos diferentes.
Si tus metodos GET y SET sólo dan y devuelven el atributo no es necesario ese control de Threads porque no va a dar errores, entonces en este caso, se usa nonatomic