2010-03-24 1 views
0

Я стараюсь, чтобы получить дату последнего изменения файла:Получить EXEC_BAD_ACCESS, когда я получаю NSFileModificationDate

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 кажется, будет выпущен, поэтому сохранить не сохраняет его.

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

ответ

0

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

+0

На данный момент я ничего не делаю с lastModifDiff, он падает при распределении, потому что lastModif кажется нулевым в соответствии с отладчиком. – Toto

+0

Теперь я запускаю ваш код. Я вынимаю ненужный выпуск и добавляю NSLog() после установки lastModifDiff. Для меня установлены оба значения. Вы уверены, что ваше имя верное? – greg

+0

Да, я могу загрузить его с помощью NSKeyedUnarchiver, а [fm fileExistsAtPath: filename] - ДА. – Toto

0

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

NSDate : timeIntervalSinceNow crash

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

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

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