0

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

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 似乎被释放,为什么保留不保留它。

谢谢你,如果你有任何想法...

4

2 回答 2

0

你不需要保留lastModif. 我认为当您对它执行 NSLog 或之后对它执行任何操作时,您可能会尝试将lastModifDiff其视为某种对象。 NSTimeInterval是双精度类型的类型定义,因此您需要将其视为双精度,或者[NSNumber numberWithDouble:lastModifDiff]如果您想像对象一样使用它。

于 2010-03-24T13:30:24.000 回答
0

我有同样的问题,但这篇文章似乎密切相关:

NSDate : timeIntervalSinceNow 崩溃

我正在编写一组简单的函数——startClock/endClock——使用 NSDate 来确定我的游戏循环中的 FPS。除了 timeIntervalSinceNow 崩溃,声称我之前设置的 NSDate 对象不存在。

我知道当我调用 startClock 时 NSDate 对象的保留计数为 1,但我的理论是 NSDate 实例在它们感到无聊并且感觉无用时在内部被操纵为自动释放。

使用保留/释放来承担这些轻浮和短暂的 NSDate 对象的所有权对我有用。

于 2012-03-29T15:22:56.533 回答