NSDate is a very thin wrapper on a double precision floating point value (the number of seconds since January 1, 2001.)
NSDate comparisons are very fast.
If you're really worried about it, convert your dates to NSTimeInterval values (doubles) and then do numerical comparisons:
NSTimeInterval startInterval = [startDate timeIntervalSinceReferenceDate];
NSTimeInterval endInterval = [endDate timeIntervalSinceReferenceDate];
NSTimeInterval someDateInterval = [someDate timeIntervalSinceReferenceDate];
if (someDateInterval >= startInterval && someDateInterval <= endInterval)
//the date someDate is between startDate and endDate.
Obviously, you'd get the starting and ending time intervals once, then use those to compare each candidate date.