嗯,我想這已經被問了一千次,但由於某些原因,answeres真的不工作,或有其他問題,....比較NSDate的當天或前一天
反正這裏是我有「的工作「:
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];
}
現在的問題(S):這似乎是一個awefull大量的代碼只是一個日期comparinson,有更簡單的方法
?
而最重要的問題是所有對象的釋放。正如可能猜到的,我在UITableViewController中使用了這個。我也有這些線在我的代碼:
//[calendar release];
//[currentDate release];
//[dateToday release];
//[dateYesterday release];
//[todayString release];
//[yesterdayString release];
//[refDateString release];
的問題是,一旦我取消註釋這些行之一,我的應用程序崩潰,我不知道爲什麼?!我希望有人能在這裏啓發我。
非常感謝。
好了,最後一點很簡單:你不擁有任何這些對象,所以他們不是你的發佈。 comps是您分配的唯一對象。其他人將全部退回autoreleased或不打算被釋放。 – walkytalky 2010-05-23 23:02:25
謝謝,很好的描述;) – elementsense 2010-05-24 00:48:01