¿Por qué no se puede comparar NSDate usando <o>?

NSDate *date = [NSDate date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"MM/dd/yyyy"];
NSLog([@"today is " stringByAppendingString:[dateFormat stringFromDate:date]]);
NSLog([@"firstBirthdayDate is " stringByAppendingString:[dateFormat stringFromDate:firstBirthdayDate]]);
NSLog([@"secondBirthdayDate is " stringByAppendingString:[dateFormat stringFromDate:secondBirthdayDate]]);
if ([firstBirthdayDate isEqualToDate:secondBirthdayDate])
    NSLog(@"First date is the same as second date");
if (firstBirthdayDate < date)
    NSLog(@"First date is earlier than today");
else
    NSLog(@"First date is later than today");

if (secondBirthdayDate < date)
    NSLog(@"Second date is earlier than today");
Hoy es 11/08/2012firstBirthdayDate es 23/01/2012secondBirthdayDate es 23/01/2012

Esto es lo que obtengo en el registro:

La primera fecha es la misma que la segunda fecha

La primera cita es más tarde que hoy

La segunda fecha es anterior a la de hoy.

Creo que me estoy volviendo loco...

Respuestas a la pregunta(4)

Su respuesta a la pregunta