【发布时间】:2026-01-05 16:55:01
【问题描述】:
好吧,我想这已经被问了一千次了,但由于某种原因,答案并没有真正起作用或有其他问题,....
无论如何,这就是我的“工作”:
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *currentDate = [NSDate date];
NSDateComponents *comps = [[NSDateComponents alloc] init];
// set tomorrow (0: today, -1: yesterday)
[comps setDay:0];
NSDate *dateToday = [calendar dateByAddingComponents:comps toDate:currentDate options:0];
[comps setDay:-1];
NSDate *dateYesterday = [calendar dateByAddingComponents:comps toDate:currentDate options:0];
[comps release];
NSString *todayString = [self.dateFormatter stringFromDate:dateToday] ;
NSString *yesterdayString = [self.dateFormatter stringFromDate:dateYesterday] ;
NSString *refDateString = [self.dateFormatter stringFromDate:info.date];
if ([refDateString isEqualToString:todayString])
{
cell.title.text = @"Today";
} else if ([refDateString isEqualToString:yesterdayString])
{
cell.title.text = @"Yesterday";
} else
{
cell.title.text = [self.dateFormatter stringFromDate:info.date];
}
现在解决问题:
对于日期比较而言,这似乎是一大堆代码,有没有更简单的方法?
最重要的问题是释放所有对象。可能已经猜到了,我在 UITableViewController 中使用它。我的代码中也有这些行:
//[calendar release];
//[currentDate release];
//[dateToday release];
//[dateYesterday release];
//[todayString release];
//[yesterdayString release];
//[refDateString release];
问题是,一旦我取消注释其中一行,我的应用程序就会崩溃,我不知道为什么?!我希望有人能在这里启发我。
非常感谢。
【问题讨论】:
-
好吧,最后一点很简单:您不拥有这些对象中的任何一个,因此它们不属于您的释放。 comps 是您分配的唯一对象。其他的要么全部返回自动释放,要么根本不打算释放。
标签: iphone uitableview nsdate