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