Foros del Web » Programación para mayores de 30 ;) » Programación móvil »

Pasar datos con el objeto Singleton

Estas en el tema de Pasar datos con el objeto Singleton en el foro de Programación móvil en Foros del Web. Hola a todos Tengo una aplicacion para ipad que tiene dos vistas y necesito pasar datos entre estas dos vistas y he visto que se ...
  #1 (permalink)  
Antiguo 04/05/2011, 12:29
 
Fecha de Ingreso: agosto-2002
Ubicación: México
Mensajes: 87
Antigüedad: 22 años, 3 meses
Puntos: 7
Pregunta Pasar datos con el objeto Singleton

Hola a todos

Tengo una aplicacion para ipad que tiene dos vistas y necesito pasar datos entre estas dos vistas y he visto que se recomienda usar los objetos Singleton pero no encuentro una guia mas acerca de este tema si alguien sabe ago sobre este tema se los agradecere.

Saludos.
__________________
Programador de la Nueva Era
  #2 (permalink)  
Antiguo 06/08/2011, 01:12
Avatar de DannoFX  
Fecha de Ingreso: agosto-2011
Ubicación: Monterrey
Mensajes: 7
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Pasar datos con el objeto Singleton

Hola PRONUER!!!!

Se que ya lo resolviste, pero lo pondre por si a alguien le interesa.

Bueno primero primero que nada te explico que es singleton, singleton es un patron de disenio que indica que un objeto de una clase solo podra ser creado una y solo una vez, es decir digamos que tu desde tu codigo creas un objeto de la clase Conexion, se crea tu objeto y hasta ahi todo bien, digamos que ya mas dentro de tu programa, muucho despues necesitas otro objeto de la clase Conexion, singleton te traera el mismo objeto de la ultima ves, con los mismos datos con los que lo dejaste, sin importar que ya se haya destruido la primera parte donde lo llamaste.

Entonces digamos que en tu vista creas tu objeto, le pones los datos que quieres y cuando crees un objeto igual en la segunda vista deberas tener exactamente el mismo codigo, te pongo un ejemplo rapido.

Clase singleton

Conexion.h
Código PHP:

@interface Conexion:NSObject
{
    
NSString direccionIP;
    
NSString nombre;
}

@
property (nonatomic,retainNSString direccionIP;
@
property (nonatomic,retainNSString nombre;

@
end 
Conexion.m:

Código PHP:
@implementation Conexion
@synthesize direccionIP;
@
synthesize nombre;

//este es el objeto del que te hablaba que siempre que es el unico que va a existir
static Conexion unicaInstancia=nil;

//Este y solo este metodo deberas utilizar para crear tus objetos!!! olvidate de [[Conexion alloc]init]!!!
+(Conexion *) conexionSingletonObject
{
    
//en este metodo si se puede dar el caso de que se mande llamar mucho
    //tienes que ocuparte de la concurrencia, pero creo que no es tu caso
    
if(unicaInstancia==nil)
        
unicaInstancia=[[Conexion allocinit];//seria la unica ve que lo creamos

    
return unicaInstancia;
}

@
end 

Codigo de tu primera vista:
Código PHP:

...
    
Conexion objetoParaLLenar=[Conexion conexionSingletonObject];
    
objetoParaLlenar.nombre=@"BASEGANSITOS";
    
objetoParaLlenar.direccionIP=@"127.0.0.1";
   
// esos son los datos que te gustaria pasarle a tu otra vista   
... 
Codigo de tu segunda vista:
Código PHP:
 
  
//con esto ya estas recuperando el mismo objeto de antes
   
Conexion objetoRecuperado=[Conexion conexionSingletonObject];
  
NSLog(@"Tengo una base de datos que se llama %@ en la direccion %@ :D, que felicidad!!!"
             
,objetoRecuperado.nombre,objetoRecuperado.direccionIP);

   
//incluso si quieres cambiar datos y conservarlos tambien lo puedes hacer desde aqui
   
objetoRecuperado.nombre@"BASEDEPATOS"

Es bastante importante no darle release a los objetos que crees con esto, porque recuarda que solo lo creas una ves, le debes de dar release hasta que ya estes seguro que no lo vas a usar ( al menos si lo haces del modo que sugeri)

Espero haberle ayudado a alguien! saludos!!

Última edición por DannoFX; 06/08/2011 a las 13:42

Etiquetas: ios, objeto, pasar, singleton
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:10.