Вы не инициализируете локальную переменную formatter
, поэтому она инициализируется с любым мусором, оставшимся в стеке, и первоначальный тест if (!formatter)
не проходит. В C / C ++ / Objective-C переменные стека НЕ автоматически инициализируются нулем. Исправление заключается в явной инициализации formatter
для nil
:
static NSNumberFormatter *formatter = nil;
Также обратите внимание, что, объявив его как static
, он будет сохраняться при вызове функций, поэтому вы не будете повторно инициализировать его для каждого вызова.