我尝试获取文件的最后修改日期:
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 :(得分:0)
您无需保留lastModif
。我认为你可能会尝试将lastModifDiff
视为某种对象,当你使用NSLog或之后用它做任何事情时。 NSTimeInterval
是double的typedef,因此如果您想像对象一样使用它,则需要将其视为double或[NSNumber numberWithDouble:lastModifDiff]
。
答案 1 :(得分:0)
我遇到了同样的问题,但是这篇文章似乎密切相关:
NSDate : timeIntervalSinceNow crash
我正在编写一组简单的函数--startClock / endClock-使用NSDate来确定游戏循环中的FPS。除了timeIntervalSinceNow崩溃,声称我之前设置的NSDate对象不存在。
我知道,当我调用startClock时,NSDate对象的保留计数为1,但我的理论是,当NSDate实例感到厌倦并且感觉不太有用时,它们内部被装配为自动释放。
使用retain / release来承担这些轻快和短暂的NSDate对象的所有权对我有用。