Pregunta

Declaro una variable en el archivo de encabezado y la sintetizo en la implementación. Cuando se carga la vista (ViewDidLoad) leo un archivo plist y puebla la variable con un valor. Con mi NSLog veo que la variable contiene el valor. Sin embargo, después de que se carga la vista, tengo cierta interacción con el usuario a través de un botón que ejecuta un método. Dentro de ese método, verifico el valor nuevamente y no es válido. ¿Por qué la variable no mantendrá su valor después de la carga inicial?

programa.h

....
NSString * user_title;
...
@property (nonatomic, retain) NSString *user_title;

program.m

@synthesize user_title;

-(void)viewDidLoad{

    NSString *filePath = [self dataFilePath];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
    NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
    user_title = [array objectAtIndex:0];
    [array release];
}
    ....


-(IBAction)user_touch_screen:(id)sender
 {
    user_label.text = user_title;  //user_title has an invaliud value at this point
   ....
¿Fue útil?

Solución

user_title = [array objectAtIndex: 0] no retiene la variable.

Use esto en su lugar:

self.user_title = [array objectAtIndex:0];

Eso usará el setter que sintetizó y retendrá el valor.

Otros consejos

Debe conservar el valor que obtiene de la matriz.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top