Dúvidas sobre a simultaneidade com objetos que podem ser usados ​​várias vezes, como formatadores

Talvez uma pergunta estúpida para perguntar, mas eu preciso de algumas confirmações sobre isso.

Normalmente, quando lido com objetos que podem ser usados ​​várias vezes em meu aplicativo, uso uma abordagem como a seguinte.

Crie uma extensão, por exemploNSDecimalNumber+Extension, ou um utilitário de classe onde um formatador numérico é criado como o seguinte.

+ (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;
}

Essa abordagem é bastante boa, pois, por exemplo, é difícil criar formatadores. Mas poderia ser aplicado a outras situações também.

Agora, minhas perguntas são as seguintes.

Essa abordagem também é válida em situações em que diferentes caminhos de execução (segmentos diferentes) estão envolvidos?

Então, se eu ligar primeirostringRepresentationOfDecimalNumber no thread principal e, em seguida, em um segmento diferente, o que poderia acontecer?

Eu acho que é válido para realizar chamadas diferentes parastringRepresentationOfDecimalNumber em diferentes threads desde o formatador compartilhado, neste caso, está lendo apenas, mas gostaria de ter uma resposta de especialistas.

Desde já, obrigado.

questionAnswers(1)

yourAnswerToTheQuestion