Закрытие фабрики Swinject вызывается несколько раз, когда объектной областью является контейнер - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь зарегистрировать CoreDataStack как один экземпляр в общем контейнере с областью объекта .container, но его закрытие фабрики вызывается несколько раз, и когда я отлаживаю график памяти в Xcode, создается несколько экземпляров объекта, даже когда возвращаемый объект не является типом значения!

Документация Swinject:

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

В чем root причина такого странного поведения?

1 Ответ

0 голосов
/ 13 июля 2020

Регистрация службы с именем решает проблему, и больше не создаются экземпляры

container.register(CoreDataStack.self, name: "CoreDataStack") {
        DefaultCoreDataStack(modelName: "name")
 }.inObjectScope(.container)
...