NSDateComponents *components = [cal components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:[[NSDate alloc] init]];
當我使用[components release];
內存釋放與ALLOC
它崩潰了我的申請,我怎麼釋放組件
當我與泄漏儀器上運行 - 我的應用程序崩潰時達到整體ALLOC 22MB的使用
NSDateComponents *components = [cal components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:[[NSDate alloc] init]];
當我使用[components release];
內存釋放與ALLOC
它崩潰了我的申請,我怎麼釋放組件
當我與泄漏儀器上運行 - 我的應用程序崩潰時達到整體ALLOC 22MB的使用
的NSCalendar方法components:fromDate:
返回一個自動釋放物體;你不能調用release
它自己(除非你已經叫retain
)。
你不能因爲它的設置由NSCalendar
對象自動釋放自己釋放components
可言。
我懷疑你的泄漏是由您傳遞給該行的代碼你NSDate
物體發出。你或許應該賦值給一個局部變量,它傳遞到[cal components]
方法然後釋放局部變量:
NSDate *today = [[NSDate alloc] init];
NSDateComponents *components = [cal components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit)
fromDate:today];
[today release];
或者,設置使用正如David Gelhar所說的那樣,它會生成一個自動釋放對象,如下所示:NSDate
對象本身自動釋放,你把它作爲你正在做的,
NSDateComponents *components = [cal components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit)
fromDate:[NSDate date]];
相當正確; '[NSDate alloc]'導致泄漏。請注意,而不是使用一個臨時和釋放它,你也可以只使用'[NSDate的日期]'得到一個自動釋放'NSDate'對象。 – 2010-07-29 17:54:46