【问题标题】: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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      相关资源
      最近更新 更多