Должен ли я сохранить объект NSCalendar для постоянного использования? - PullRequest
1 голос
/ 28 октября 2011

В приложении, подобном календарю, или его части, мне нужно использовать (григорианский) календарь во многих подпрограммах, что означает, что мне нужно многократно выделять-инициализировать и освобождать один и тот же объект NSCalendar. Должен ли я сохранить один NSCalendar (скажем, григорианский календарь) в качестве ивара (@property(nonatomic,retain)) в моем длинном постоянном экземпляре контроллера?

Или его методы экземпляра повторно входящие / потокобезопасные?

1 Ответ

7 голосов
/ 29 октября 2011

В общем, вы должны иметь при себе календари и средства форматирования даты, потому что их создание и / или использование в первый раз обходятся дорого (я понял это нелегко).

Тем не менее, поток Сводка по безопасности перечисляет и NSCalendar, и NSFormatter (суперкласс NSDateFormatter) как «Thread-Unsafe», говоря:

Следующие классы и функции, как правило, не являются поточно-ориентированными.В большинстве случаев вы можете использовать эти классы из любого потока, если вы используете их только из одного потока за раз.Обратитесь к документации класса для получения дополнительной информации.

Я предлагаю поискать способ сделать оба.Это одно из преимуществ самостоятельного создания потоков с помощью NSThread: вы можете хранить календарь каждого потока в его словаре потоков .

В противном случае вам просто придется каждый раз создавать и выбрасывать каждый календарь.и оплатить стоимость исполнения.

...