Вы не должны освободить components
себя на всех, как это установлено в autorelease от NSCalendar
объекта.
Я подозреваю, что ваша утечка исходит от вашего объекта NSDate
, который вы передаете этой строке кода. Вы, вероятно, следует назначить, что для локальной переменной, передать его методу [cal components]
затем отпустить локальную переменную:
NSDate *today = [[NSDate alloc] init];
NSDateComponents *components = [cal components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit)
fromDate:today];
[today release];
Или установить NSDate
сам объект в autorelease, как вы передаете его, как вы делаете, использование [NSDate date]
, который, как Дэвид Gelhar прокомментировал сгенерирует autoreleased объект, например, так:
NSDateComponents *components = [cal components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit)
fromDate:[NSDate date]];
Совершенно верно; '[NSDate alloc]' вызывает утечку. Обратите внимание, что вместо того, чтобы использовать temp и освобождая его, вы также можете просто использовать '[NSDate date]' для получения объекта с автореализацией 'NSDate'. –