Eliminar componentes de tiempo de un objeto NSDate usando Objective C / Cocoa

Estoy tratando de escribir una función simple usando el Objetivo C que acepte un objeto NSDate y devuelva un objeto NSDate que contenga el mismo valor de fecha pero haya eliminado cualquier componente de tiempo de la fecha.

Por ejemplo, si tuviera que pasar un NSDate con un valor de '2010-10-12 09:29:34', la función devolvería 2010-10-12 00:00:00.

La función que estoy usando parece funcionar correctamente. Sin embargo, cuando pruebo la aplicación para iPhone que estoy desarrollando con Instruments, informa que hay una pérdida de memoria en la función que estoy usando. Echa un vistazo a mi función a continuación. ¿Dónde hay una pérdida de memoria? ¿Hay una mejor manera de lograr la funcionalidad que deseo?

¡¡Gracias por adelantado!!

-(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];
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta