У меня есть несколько методов, которые возвращают количество будних дней между двумя заданными датами. Поскольку вызов этих методов становится очень дорогим для вызова, когда две даты лежат годами, мне интересно, как эти методы могут быть реорганизованы более эффективным способом. Вернувшийся результат верен, но я чувствую, что процессор iphone изо всех сил пытается поддерживать и, следовательно, замораживает приложение, когда я буду называть эти методы за период, скажем, 10 лет. Любые предложения?Проверка эффективности работы в будние дни за определенный период
//daysList contains all weekdays that need to be found between the two dates
-(NSInteger) numberOfWeekdaysFromDaysList:(NSMutableArray*) daysList
startingFromDate:(NSDate*)startDate
toDate:(NSDate*)endDate
{
NSInteger retNumdays = 0;
for (Day *dayObject in [daysList objectEnumerator])
{
if ([dayObject isChecked])
{
retNumdays += [self numberOfWeekday:[dayObject weekdayNr] startingFromDate:startDate toDate:endDate];
}
}
return retNumdays;
}
-(NSInteger) numberOfWeekday:(NSInteger)day
startingFromDate:(NSDate*)startDate
toDate:(NSDate*)endDate
{
NSInteger numWeekdays = 0;
NSDate *nextDate = startDate;
NSComparisonResult result = [endDate compare:nextDate];
//Do while nextDate is in the past
while (result == NSOrderedDescending || result == NSOrderedSame)
{
if ([NSDate weekdayFromDate:nextDate] == day)
{
numWeekdays++;
}
nextDate = [nextDate dateByAddingDays:1];
result = [endDate compare:nextDate];
}
return numWeekdays;
}