2010-03-24 47 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是一个double类型定义,所以如果你想像对象一样使用它,你需要把它看作是一个double或者[NSNumber numberWithDouble:lastModifDiff]

+0

我暂时没有对lastModifDiff做任何事情,它在分配时崩溃,因为根据调试器,lastModif似乎为零。 – Toto 2010-03-24 13:38:43

+0

我正在运行您的代码。在设置lastModifDiff后,我拿出不必要的版本并添加一个NSLog()。这两个值都是为我设定的。你确定你的文件名是正确的吗? – greg 2010-03-24 13:42:31

+0

是的,我可以使用NSKeyedUnarchiver加载它,[fm fileExistsAtPath:filename]是YES。 – Toto 2010-03-24 13:47:52

0

我有同样的问题,但这个帖子似乎有密切关系:

NSDate : timeIntervalSinceNow crash

我正在写一组简单的职能 - startClock/endClock - 使用的NSDate的决定在我的游戏循环FPS 。除了timeIntervalSinceNow崩溃,声称我早先设置的NSDate对象不存在。

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

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

相关问题