В ответ на ответы sStaticData и NSLock (комментарии ограничены 600 символами) не нужно быть очень осторожным при создании объектов sStaticData и NSLock потокобезопасным способом (чтобы избежать очень маловероятного сценария несколько блокировок создаются разными потоками)?
Я думаю, что есть два обходных пути:
1) Вы можете поручить создание этих объектов в начале дня в едином корневом потоке.
2) Определите статический объект, который автоматически создается в начале дня для использования в качестве блокировки, например, статическая строка NSString может быть создана inline:
static NSString *sMyLock1 = @"Lock1";
Тогда я думаю, что вы можете безопасно использовать
@synchronized(sMyLock1)
{
// Stuff
}
В противном случае, я думаю, вы всегда будете в ситуации «курица и яйцо», когда будете создавать свои замки безопасным способом?
Конечно, вы вряд ли столкнетесь с какой-либо из этих проблем, так как большинство приложений для iPhone работают в одном потоке.
Я не знаю о предложении [Групповой семафор] ранее, это также может быть решением.