Variável perder o seu valor (iPhone SDK)
Pergunta
Eu declaro uma variável no arquivo de cabeçalho e sintetizá-lo na implementação. Quando as cargas vista (ViewDidLoad) I ler um arquivo plist uma preencher a variável com um valor. Com a minha NSLog vejo que a variável contém o valor. No entanto, após as cargas de vista, eu tenho algum tipo de interação com o usuário através de um botão executa um método. Dentro desse método que eu verificar o valor novamente e é inválido. Por que a variável não irá manter o seu valor após a carga inicial?
program.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
....
Solução
user_title = [array objectAtIndex:0]
não retém a variável.
Use este em vez disso:
self.user_title = [array objectAtIndex:0];
Isso vai usar o setter que você sintetizada, e irá manter o valor.
Outras dicas
Você precisa manter o valor que você sair da matriz.