Ошибка EXC_BAD_ACCESS для -timeIntervalSinceNow - PullRequest
4 голосов
/ 11 августа 2011

Надеюсь, кто-то может помочь с этим. Я получаю ошибку неверного доступа при попытке использовать метод -timeIntervalSinceNow. У меня есть переменная в этом классе под названием NSDate *startDate, и я добавил @property (nonatomic, retain) NSDate *startDate;

startDate используется в коде здесь:

    startDate = [NSDate date];
    updateTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 
                                                   target:self
                                                 selector:@selector(updatePlaybackPosition:)
                                                 userInfo:nil
                                                  repeats:YES];
}

}

- (void)updatePlaybackPosition:(NSTimer *)timer {
   NSTimeInterval interval = [startDate timeIntervalSinceNow];

Когда программа достигает [startDate timeIntervalSinceNow], выдает ошибку неверного доступа. Из других постов, которые я читал по этой теме, ответ, как правило, как-то связан с сохранением даты. Итак, я не уверен, что мне не хватает. Любая помощь приветствуется!

Ответы [ 3 ]

5 голосов
/ 11 августа 2011

Ваш NSDate был автоматически отпущен до срабатывания таймера. updated: Убедитесь, что вы используете объявленное вами свойство вместо переменной экземпляра с помощью self.. Это будет правильно обрабатывать удержание для вас.

self.startDate = [NSDate date];

, а затем

- (void)updatePlaybackPosition:(NSTimer *)timer {
   NSTimeInterval interval = [self.startDate timeIntervalSinceNow];
1 голос
/ 02 сентября 2011

Я на самом деле разобрался с ответом на это, в конце концов. Кажется, лучше использовать

-timeIntervalSinceDate:[NSDate date]

вместо использования -timeIntervalSinceNow. По сути, он делает то же самое, но по какой-то причине -timeIntervalSinceNow каждый раз выдает ошибочную ошибку доступа, но описанный выше метод работает просто отлично.

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

[NSDate date] возвращает вам автоматически выпущенный NSDate.Если вы хотите использовать это значение вне метода, в котором оно было вам возвращено, вы должны retain его (и release когда закончите с ним).

...