Сбой объекта NSDate при вызове dateByAddingTimeInterval: function. Зачем? - PullRequest
0 голосов
/ 12 августа 2011

Я объявил объект NSDate в части .h. В .m, в viedDidLoad, я использовал следующие строки, и он работает нормально

shownDate = [NSDate date];
shownDate = [shownDate dateByAddingTimeInterval:86400.0];

Затем, когда я нажимаю кнопку, я вызываю ту же функцию внутри функции

    shownDate = [shownDate dateByAddingTimeInterval:86400.0];

Но здесь он падает. Это единственные 3 строки в программе, где я использовал эту функцию. Может кто-нибудь сказать мне, почему это происходит?

Ответы [ 3 ]

4 голосов
/ 12 августа 2011

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

0 голосов
/ 12 августа 2011
shownDate = [NSDate date];
shownDate = [shownDate dateByAddingTimeInterval:86400.0];
[shownDate retain];

При вызове от нажатия кнопки:

NSDate newDate = [shownDate dateByAddingTimeInterval:86400.0];
[shownDate release];
shownDate = newDate;
[shownDate retain];

в качестве альтернативы сделайте свойство visibleDate сохраняемым и назовите его как self.shownDate, и сохранение / освобождение будет обработано автоматически.

0 голосов
/ 12 августа 2011

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

вместо

shownDate = [NSDate date];

используйте

shownDate = [[NSDate alloc] init];
...