每次使用 Swinject 解析对象时如何返回相同的实例?

Posted

技术标签:

【中文标题】每次使用 Swinject 解析对象时如何返回相同的实例?【英文标题】:How to return the same instance every time when resolving object with Swinject? 【发布时间】:2018-10-08 13:42:07 【问题描述】:

目前我这样做:

    container.register(TabBarViewModelable.self)  (_, tabBarItems: [TabBarItemType]) in
        return TabBarViewModel(tabBarItems: tabBarItems)
    .inObjectScope(.container)

它不起作用。有没有办法在我第一次用标签栏项目数组初始化它后每次都返回相同的实例?

【问题讨论】:

你可以将 TabBarViewModel 设为单例并返回 【参考方案1】:

您可以使用 singleton 模式。

基本上,您可以将 TabBarViewModel 包装在另一个单例类中并返回该类的对象。

看看

https://medium.com/@nimjea/singleton-class-in-swift-17eef2d01d88

【讨论】:

非常非常糟糕的主意;)

以上是关于每次使用 Swinject 解析对象时如何返回相同的实例?的主要内容,如果未能解决你的问题,请参考以下文章

当对象范围为容器时,多次调用 Swinject 工厂关闭

Swinject 返回 nil,因为对象注册错误

Swinject - 如何从一个解析器两次解析同一个控制器?

Swinject:生成任何对象的实例(对于未注册的对象、ViewModel 等...)

Swinject:使用弱范围会泄漏对象

swinject 是不是重新实例化对象?