Получите EXEC_BAD_ACCESS, когда я получу NSFileModificationDate - PullRequest
0 голосов
/ 24 марта 2010

Я пытаюсь получить дату последнего изменения файла:

NSFileManager *fm = [[NSFileManager alloc] init];
NSError *err;
NSDate *lastModif = [[fm attributesOfItemAtPath:filename error:&err] objectForKey:NSFileModificationDate];//filename is ok ;-)
if(err == nil) {
    [lastModif retain];
    //I can put a NSLog of lastModif here, it works !!
    NSTimeInterval lastModifDiff = [lastModif timeIntervalSinceNow];//crash here
}

Я не понимаю, почему NSDate кажется выпущенным, почему сохранение не сохраняет его.

Спасибо, если у вас есть идеи ...

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

У меня та же проблема, но этот пост показался уместным:

NSDate: timeIntervalSinceNow crash

Я пишу простой набор функций - startClock / endClock - используя NSDate для определения FPS в моем игровом цикле. За исключением того, что timeIntervalSinceNow аварийно завершает работу, утверждая, что мой ранее установленный объект NSDate не существует.

Я точно знаю, что объект NSDate имеет счет сохранения 1, когда я вызываю startClock, но моя теория состоит в том, что экземпляры NSDate внутренне настроены на автоматическое освобождение, когда им становится скучно и они не чувствуют себя полезными.

Использование retain / release для принятия прав на эти непростые и эфемерные объекты NSDate сработало для меня.

0 голосов
/ 24 марта 2010

Вам не нужно удерживать lastModif.Я думаю, что вы, возможно, пытаетесь трактовать lastModifDiff как какой-то объект, когда вы делаете с ним NSLog или все, что вы делаете с ним впоследствии.NSTimeInterval - это typedef для double, поэтому вам нужно рассматривать его как double или [NSNumber numberWithDouble:lastModifDiff], если вы хотите использовать его как объект.

...