NSDateComponents *components = [cal components:( NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:[[NSDate alloc] init]];
当我使用[components release];
它崩溃我的应用程序,我如何发布组件
当我使用泄漏仪器运行时 - 我的应用程序在达到使用整体alloc 22MB
时崩溃答案 0 :(得分:3)
由于components
对象设置为自动释放,因此您不得自行释放NSCalendar
。
我怀疑您的泄漏来自您传递给该代码行的NSDate
对象。您应该将其分配给局部变量,将其传递给[cal components]
方法然后释放局部变量:
NSDate *today = [[NSDate alloc] init];
NSDateComponents *components = [cal components:( NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit )
fromDate:today];
[today release];
或者,将使用NSDate
对象本身设置为自动释放,因为您正在执行它,[NSDate date]
,正如David Gelhar所评论的那样将生成一个自动释放的对象,像这样:
NSDateComponents *components = [cal components:( NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit )
fromDate:[NSDate date]];
答案 1 :(得分:2)
NSCalendar方法components:fromDate:
返回一个自动释放的对象;你不能自己打电话给release
(除非你先叫retain
)。