获取DNS文件修改日期后获取EXC_BAD_ACCESS

时间:2010-03-24 13:19:11

标签: iphone objective-c nsdate nstimeinterval

我尝试获取文件的最后修改日期:

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 :(得分: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对象的所有权对我有用。