Хотя уже было сказано, что на этот вопрос уже дан ответ в SO, я думаю, что есть некоторые отличия, которые делают этот вопрос уникальным, и именно поэтому я собираюсь ответить на него.
Моя реализация Singleton абсолютно верна, и проблема, которая касалась меня, описана, как сказал Мартин Р. в комментариях здесь . Он известен как «Curried» Функции, так как эта ссылка расскажет вам гораздо больше, чем я.
Что касается синглетонов, то, насколько я обнаружил, нет способа скрыть эти «классовые» методы. , Тем не менее, это также правда, что мы не должны сильно беспокоиться об этом, так как некоторые официальные классы (те, что сделаны Apple), которые используют синглтоны, также демонстрируют такое же поведение. Здесь у нас есть несколько примеров на случай, если вы захотите проверить:
- UserDefaults.standard
- FileManager.default
- URLSession.shared
- OperationQueue. main
- UIApplication.shared
В общем, если вы просто делаете синглтон (и не знакомы с каррированными функциями) и видите это поведение, не беспокойтесь об этом, это правильный способ сделать это, и в вашем коде нет ничего плохого.