Хранить глобальные локальные переменные времени в базе данных в iphone

Я пытался хранить глобальные переменные в форме NSDATE, но, похоже, это всегда дает ошибку. Я пытаюсь получить текущую дату в начале приложения, а затем сохранить эту дату после завершения приложения в базе данных. Причина загрузки текущей даты: загрузка данных, которая может занять некоторое время с потерей нескольких секунд между ними.

В AppDelegate.h

NSDate *today;

@property (nonatomic, retain) NSDate *today;

В AppDelegate.m

today = [NSDate date];

Когда я просматриваю сегодняшнюю дату в контроллере представления, она перестает работать.

В ViewController.m

AppDelegate *appDelegate= [[UIApplication sharedApplication] delegate];
[appDelegate today]; // Error here 

Как правильно получить переменную даты из метода делегата?


person lifemoveson    schedule 21.07.2011    source источник


Ответы (2)


В вашем примере кода похоже, что вы переопределяете сегодня. Но вы не должны быть назначены сегодня напрямую в любом случае, вам нужно установить свойство следующим образом.

self.today = [NSDate date];

Причина в том, что [NSDate date] является автоматически выпускаемым объектом, и когда вы используете это свойство, оно будет должным образом сохранять его для вас.

person Joe    schedule 21.07.2011
comment
Я обновил свой код. Извините, я неправильно написал это с сегодняшним полем. - person lifemoveson; 21.07.2011

Вам нужно выделить сегодня и использовать самостоятельный статус:

//In AppDelegate.m
today = [[NSDate alloc] init];
self.today = [NSDate date];

а не: NSDate *today = [NSDate date]; вот так вы перезаписываете переменную экземпляра

person Frade    schedule 21.07.2011
comment
Нет необходимости выделять сегодня, собственность позаботится об этом - person Joe; 21.07.2011