我正在尝试实现一种将 NSDate 实例变量增加一个月的方法。我遇到了内存管理问题。(我正在使用 MallocScribble 和 NSZombieEnabled,并收到消息:-[CFDate copy]: message sent to deallocated instance 0x3d9dfa0)
我的问题归结为:增加日期的最佳方法是什么?这是我的代码:
NSDate *displayedMonthYear;
....
-(IBAction) nextMonth:(id)sender {
NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setMonth:1];
NSDate *prevDate = [displayedMonthYear copy];
[displayedMonthYear release];
displayedMonthYear = [calendar dateByAddingComponents:dateComponents toDate:prevDate options:0];
[prevDate release];
[dateComponents release];
[calendar release];
}
最初我并没有对 prevDate 副本做一些事情,而是在做类似的事情:
displayedMonthYear = [calendar dateByAddingComponents:dateComponents toDate:displayedMonthYear options:0];
但是,我担心这种方法会泄漏内存。所以我想这更像是一个内存管理问题而不是日期问题,但任何帮助都会很棒——