Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/08/2011, 01:12
Avatar de DannoFX
DannoFX
 
Fecha de Ingreso: agosto-2011
Ubicación: Monterrey
Mensajes: 7
Antigüedad: 12 años, 8 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