【问题标题】:Swinject factory closure called multiple times when object scope is container当对象范围为容器时,多次调用 Swinject 工厂关闭
【发布时间】:2020-07-12 11:48:14
【问题描述】:
我正在尝试将 CoreDataStack 注册为对象范围 .container 的共享容器上的单个实例,但是它的工厂关闭被多次调用,并且当我在 Xcode 中调试内存图时,即使在返回的对象不是值类型!
Swinject 文档:
如果工厂闭包返回值类型,则忽略对象范围,因为它的实例根据 Swift 规范从不共享。
这种奇怪行为的根本原因是什么?
【问题讨论】:
标签:
ios
swift
dependency-injection
swinject
【解决方案1】:
使用名称注册服务可以解决问题并且不再创建实例
container.register(CoreDataStack.self, name: "CoreDataStack") {
DefaultCoreDataStack(modelName: "name")
}.inObjectScope(.container)