Пример использования [NSCalendar autoupdatingCurrentCalendar] - PullRequest
8 голосов
/ 08 марта 2011

Я ищу пример, где вместо + currentCalendar будет использоваться + autoupdatingCurrentCalendar. Более конкретно, где значения на основе календаря автоматически изменяются при изменении календаря. Нужны ли мне привязки для этого или что-то в этом роде?

Состояние документов:

Обратите внимание, что если вы кэшируете значения на основе календарь или связанная информация эти кеши конечно не будут автоматически обновляется при обновлении объекта календаря.

Заранее спасибо

Ответы [ 3 ]

4 голосов
/ 20 мая 2012

currentCalendar возвращает кэшированную версию текущего системного календаря, а autoupdatingCurrentCalendar всегда возвращает самую последнюю версию системного календаря.

Это важно, когда вы представляете данные, основанные на различных параметрах календарянапример, количество дней в месяце, количество недель в году или количество часов в дне.

Если честно, я не знаю, почему Apple дает вам возможность получить устаревшую стоимость, используя currentCalendar.Похоже, у них есть внутренний API, который позволяет вам манипулировать кешами NSCalendar, чтобы вы могли добиться лучшей производительности.Но поскольку он не является общедоступным, нет смысла использовать currentCalendar.

То есть всегда использовать autoupdatingCurrentCalendar.

1 голос
/ 20 ноября 2011

Ну, на OS X вы можете запускать несколько процессов одновременно.Одним из них может быть ваш процесс, использующий autoupdatingCurrentCalendar.Другой может быть Системные настройки.

Системные настройки позволяют настроить параметры календаря.Вы можете выбрать первый день недели, отличный от значения по умолчанию (воскресенье).Или вы можете выбрать совершенно другой календарь.Если вы используете autoupdatingCurrentCalendar, эти изменения будут приняты автоматически.Если вы не используете его, они не будут.

0 голосов
/ 19 мая 2012

Полагаю, это будет полезно, если вы сохраните календарь в памяти для дальнейшего использования. Таким образом, если настройки календаря изменятся, ваш сохраненный календарь будет учитывать эти изменения, если вы использовали autoupdatingCurrentCalendar. Если вы используете только currentCalendar, он останется в том состоянии, в котором он был при первом вызове.

...