Сомнения в параллелизме с объектами, которые можно использовать несколько раз, например, в формататорах

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

Обычно, когда я имею дело с объектами, которые могут использоваться несколько раз в моем приложении, я использую подход, подобный следующему.

Создайте расширение, скажем, напримерNSDecimalNumber+Extensionили утилита класса, в которой создается средство форматирования чисел, как показано ниже.

+ (NSNumberFormatter*)internal_sharedNumberFormatter
{
    static NSNumberFormatter* _internal_numberFormatter = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _internal_numberFormatter = [[NSNumberFormatter alloc] init];
        // other configurations here...
    });

    return _internal_numberFormatter;
}

+ (NSString*)stringRepresentationOfDecimalNumber:(NSDecimalNumber*)numberToFormat
{
    NSString *stringRepresentation = [[self class] internal_sharedNumberFormatter] stringFromNumber:numberToFormat];
    return stringRepresentation;
}

Этот подход довольно хорош, так как, например, форматтеры дороги в создании. Но это может быть применено и к другим ситуациям.

Теперь мои вопросы следующие.

Этот подход также действителен в ситуациях, когда задействованы разные пути выполнения (разные потоки)?

Итак, если я позвоню первымstringRepresentationOfDecimalNumber в главном потоке, а затем в другом потоке, что может произойти?

Я думаю, что допустимо выполнять разные звонкиstringRepresentationOfDecimalNumber в разных темах, поскольку общий форматер, в данном случае, только для чтения, но я хотел бы получить ответ от экспертов.

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

Ответы на вопрос(1)

Ваш ответ на вопрос