Переменная, теряющая свое значение (iPhone SDK)
Вопрос
Я объявляю переменную в заголовочном файле и синтезирую ее в реализации.Когда представление загружается (viewDidLoad) Я читаю файл plist и заполняю переменную значением.С помощью моего NSLog я вижу, что переменная содержит значение.Однако после загрузки представления у меня происходит некоторое взаимодействие с пользователем с помощью кнопки, которая выполняет метод.В рамках этого метода я снова проверяю значение, и оно оказывается недопустимым.Почему переменная не сохраняет свое значение после начальной загрузки?
программа.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
....
Решение
user_title = [array objectAtIndex:0]
не сохраняет переменную.
Используйте это вместо:
self.user_title = [array objectAtIndex:0];
При этом будет использоваться сеттер, который вы синтезировали, и сохранится значение.
Другие советы
Вам нужно сохранить значение, которое вы получаете из массива.