подобную конструкцию - shared экземпляр + публичный init(). При этом постоянно слышу о том, что синглтоны зло. Это все еще синглтон или это какой-то другой паттерн? И насколько оправданно использовать подобный подход в своих классах, обращаясь к shared экземпляру там, где нет потребности в создании отдельного экземпляра?
Пример, текущая реализация контроллера CoreData:
import CoreData
struct PersistenceController {
static let shared = PersistenceController()
…
init(inMemory: Bool = false) {
…
}
}
Это не ошибка? Я думаю это ошибка Инит должен быть запривачен Иначе какой смысл
это не ошибка, это код эпла из коробки
тоже так всегда думал …
Ну Эпал тоже может ошибаться, равно как и все вокруг. А также выдавать странные, кривые, незавершенные, забагованые решения. Я бы не стал делать так, Эпал делает, таков путь!
Не ошибка. Там где в одном месте используется синглтон со стандартными параметрами, в другом – экземпляр с кастомной конфигурацией. Как один из аспектов – тестирование. Простейший пример UserDefaults. Если тестировать с UserDefaults.standard, к примеру, очистку сохранённых данных – все данные приложения удалятся. А так создали экземпляр UserDefaults со сьютом для тестов и вороти что хочется.
Спасибо поразмыслю над этим
UserDefault - вроде фабрика.
Обсуждают сегодня