【发布时间】:2011-03-24 23:21:28
【问题描述】:
我在使用 NSDate 并将其保存在 NSUserDefaults 中时遇到了一些问题。每次 NSUserDefaults 保存我的 NSDate 时,它似乎都无法保存,因为它已被释放并在日志中显示此错误。
-[__NSDate retain]: message sent to deallocated instance 0x4c20c80
我知道 NSDate 分配和释放的方式与普通对象不同,但我想知道是否有人知道是否使用:
- (void)saveData
{
NSUserDefaults *data = [NSUserDefaults standardUserDefaults];
[data setObject:dateOpened forKey:@"dateOpened"];
[dData synchronize];
}
...或...
- (void)loadData
{
NSUserDefaults *data = [NSUserDefaults standardUserDefaults];
dateOpened = [data objectForKey:@"dateOpened"];
}
我正在释放我的 NSDate 实例,因此将其保留计数设为 0,以便我的应用在尝试时无法再次保存它?
我正在使用:
@property (retain) NSDate *dateOpened;
任何想法都会非常感激,因为我正在努力解决这个问题。我只学习了大约 4 个月左右,并且几乎完成了我的第一个应用程序,这是工作中的主要扳手!
非常感谢,如果您需要更多代码或有关我正在做什么的信息,请告诉我。 :-D
【问题讨论】:
-
在上面您保存和加载数据的示例代码中,ivar 说 CLOSED (dateClosed),键说 OPENED (dateOpened)。但是当您提到@property 行时,您会说ivar 是dateOpened (OPENED)。你是说你没有把约会搞混吗?
-
哦,抱歉,忘记更改了。只是把它编辑成它应该是的样子。日期没有混淆,只是我的复制和粘贴错误。 :)
标签: iphone cocoa ios nsdate nsuserdefaults