我想使用Objective C編寫一個簡單的函數,它接受一個NSDate對象並返回一個NSDate對象,該對象包含相同的日期值,但已從中刪除任何時間組件日期。使用Objective C/Cocoa從NSDate對象中刪除時間組件
例如,如果我要傳遞一個值爲'2010-10-12 09:29:34'的NSDate,該函數將返回2010-10-12 00:00:00。
我使用的功能似乎正常工作。但是,當我測試使用Instruments開發的iPhone應用程序時,它報告我正在使用的函數中存在內存泄漏。看看我的功能如下。哪裏有內存泄漏?有沒有更好的方法來實現我想要的功能?
在此先感謝!
-(NSDate *)dateWithOutTime:(NSDate *)datDate
{
if (datDate == nil)
{
datDate = [NSDate date];
}
unsigned int intFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *components = [[[NSDateComponents alloc] init] autorelease];
components = [calendar components:intFlags fromDate:datDate];
return [calendar dateFromComponents:components];
}
值得一提的是,NSDate的本身沒有組件的概念,因爲它是代表一個時間點的對象。沒有時間和語言環境,人類可讀的日期沒有固有的意義。即使時間在該日期的某個時間隱含在該語言環境中。 – uchuugaka 2014-04-13 10:19:25