Делегаты не работают правильно

Я плохо знаком с разработкой iPhone. Я преобразовываю дату в нужный формат и устанавливаю его на делегата и получаю его значение в другом представлении. Сессия перезапускает, когда я пытался получить значение от делегата. Если я назначил исходную дату а не отформатированную дату в делегате набора, то я способный получить значение в другом представлении. Если я также даю какое-либо статическое строковое значение, то также я могу к статическому строковому значению назад. Только отформатированная дата, которая является строкой, установлена затем перезапуски сессии. Если я печатаю и проверяю значение отформатированной даты, это печатает корректную отформатированную дату только. Выручите меня. Вот мой код для преобразования даты

NSString *dateval=[[stories objectAtIndex: storyIndex] objectForKey:@"date"];

NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];

[inputFormatter setDateFormat:@"EEE, MMM dd, yyyy"];

NSDate *inputDate = [inputFormatter dateFromString:dateval];

NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];

[outputFormatter setDateFormat:@"MMMM dd"];

NSString *outputDate = [outputFormatter stringFromDate:inputDate];  

AppDelegate *delegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];

[delegate setCurrentDates:outputDate];

Править: Это отображено в консоли

в представлении действительно загружался

[Сессия, запущенная в 21.04.2010 19:12:53 +0530.] GNU gdb 6.3.50-20050815 (версия gdb-967 Apple) (вторник 14 июля 2:11:58 UTC 2009) Copyright 2004 Free Software Foundation, Inc. GDB является бесплатным программным обеспечением, охваченным Генеральной общедоступной лицензией GNU, и добро пожаловать изменить его и/или распределить копии его при определенных условиях. Введите "выставочное копирование" для наблюдения условий. Нет абсолютно никакой гарантии для GDB. Введите "выставочную гарантию" для деталей. Этот GDB был настроен как "i386-apple-darwin".sharedlibrary apply-load-rules все Присоединение для обработки 4216. (gdb)

В другом представлении

 - (void)viewDidLoad {
NSLog(@"inside view did load");
AppDelegate *delegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];
NSString *titleValue=[delegate getCurrentDates];
self.navigationItem.title =titleValue ;
}

Получение не работает правильно. Это хорошо работает, если я даю какую-либо статическую строку или "dateval".

Спасибо.

1
задан Warrior 21 April 2010 в 13:48
поделиться

1 ответ

outputDate , похоже, не сохраняется, поэтому значение теряется в конце цикла событий (из-за NSAutoreleasePool).

Вы должны сохранить outputDate , чтобы избежать его выпуска с чем-то вроде этого в делегате:

- (void)setCurrentDates:(NSString *)value {
    [value retain]; // <- Retain new value
    [date release]; // <- Release old value;
    date = value;
}

Лучшим решением было бы иметь объявленное свойство в делегате с сохранить атрибут.

2
ответ дан 3 September 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: