Есть ли способ преобразовать этот код во что-то похожее без использования блока?
Вы можете просто выделить свой общий объект, но тогда вы не получите защиту, которую предлагает dispatch_once()
. Эта функция гарантирует, что блок, который вы передаете, выполняется не более одного раза во время выполнения вашего приложения. Если код, который создает ваш синглтон, находится внутри блока, который вы передаете dispatch_once()
, вы знаете, что два потока в вашем приложении не могут одновременно пытаться получить доступ к общему объекту и, возможно, вызывают его создание дважды.
Есть ли причина, по которой вы не хотите использовать блок?