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
   ....
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top