问题标签 [swinject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - Swinject 将 self 的属性注入新的 UIViewController
假设我们有一个UITableViewController
that ondidSelectRowAtSection
加载一个名为 ie: 的类的实例,ClassToInject
并且它想通过属性注入来注入它,因为我们ViewControllerToBePushed
有一个 , 的属性ClassToInject
,随后(因为它是一个UITabBarViewController
)在didSet
回调中搜索它的所有viewControllers
属性符合ClassToInjectPresentable
简单的:
到现在为止,我只会做这样的事情:
而在SomeTabBarViewController
...
并且所有内容都应该轻松加载(但事实并非如此)。我读过Swinject
这可能会解决它。我已经看到很多注册的例子,比如:
但我不知道我是否可以注册一些加载的属性self
:
ios - Swinject 在一个简单的项目中给出 EXC_BAD_ACCESS 代码 = 2。如果使用 Xcode 9 beta 编译,则可以工作
我有一个最小的工作项目,如果用 Xcode 8.3.3 编译它会给我 EXC_BAD_ACCESS。该项目是一个简单的 VIPER 模块实现。Swinject 被用于创建模块本身以及所有依赖项。
我如何解决问题(或认为我解决了):
- 通过删除 SwinjectBug 目录的引用并重新添加解决了几天前的问题。但是,这不再起作用了。
什么仍然解决了这个问题:
- 使用相同的 iPhone 型号和 iOS 版本在 Xcode 9-beta 中编译和运行可以完美运行。[这个观察可能是错误的。一直不工作]
- 如果我强制 cast
output as! SplashScreenPresenter
,代码可以正常工作。
可能的场景:
- Xcode 8.3.3 中存在一个错误,在 Xcode 9 中已解决但如果上述情况属实,则其他模块应该失败但事实并非如此。
- 我使用 Swinject 的方式有问题。
您可以编译并运行该项目。
我在用:
- iPhone 6s 64GB 上的 iOS 10.3.1
- Xcode 8.3.3
EXC_BAD_ACCESS 发生在 SplashViewController 中,在输出时调用 viewIsReady
cocoapods - 使用特定分支时如何满足cocoapod外部依赖
在我的项目中,我同时使用了 Swinject 和 SwinjectAutoregistration pod。两者通常都被声明为“2.0.0”版本,如下所示:
pod 'Swinject', '2.0.0'
pod 'SwinjectAutoregistration', '2.0.0'
但是为了在 Xcode 9 的 beta 版本中构建我的项目,我需要采用 Swinject github repo 的特定分支,如此处所述。新声明如下所示:
pod 'Swinject', :git => 'https://github.com/Swinject/Swinject.git', :branch => 'swift4'
当我尝试时pod update
,我有依赖项错误。我相信 SwinjectAutoregistration 声明了对 Swinject 2.0 的依赖,因此我对同一个 pod 有不同的来源。
有没有办法告诉 cocoapods 这个特定的 pod 来源就像2.0 版本?
swift - Swinject:使用元类型列表解析
我正在尝试创建一个函数来返回一个元类型数组,然后我可以使用它来解析来自 Swinject 的实例Resolver
。这是我的代码:
我不知道如何解决这个问题。我是否需要在该getTypes()
方法中以某种方式使用泛型?我需要type.self
在解决时调用一些等价物吗?
我的要求是我可以定义一个[ConcreteTaskA.self, ConcreteTaskB.self]
由解析器解析的元类型 ( ) 列表。
ios - 如何使用 swinject 正确注入依赖项
我正在尝试使用 Swinject 注入依赖项,但我不知道我做错了什么。
我有处理注册用户的协议。
和一个符合这个协议的类使所有的逻辑:
因此,在 AppDelegate 中我们注册了容器,它看起来像:
但在 CreateAccountVC authService 中为空。有什么想法我该怎么做?CreateAccountVC 是 ViewController 的子类,我已经通过属性和构造函数尝试过它,但它一直为零。
ios - 如何从两个不同的 IOC 容器解析 Singleton 实例
我是 IOC 的新手,我正在构建一个应用程序,我们正在使用 IOC 容器,同时讨论我们决定一个架构,每个模块将有两个程序集,一个用于所有模块级工作,不暴露在该模块之外,一个具有公共访问权限我们想要在外面公开的功能。
我的问题是我需要创建两个 IOC 容器,一个在 APP 级别,一个在模块级别,并且有一个我想向两者注册的单例实例,但是当我解决它们时,两个级别上都创建了类的两个实例一种只获取一个实例的方法。
一种方法是创建一个 Singleton 类并禁止生成另一个实例,但我认为会删除 IOC 的概念,是否有任何其他方法可以解决两个 IOC 容器之间的单例实例。
谢谢
ios - 使用 Swinject 在对象之间共享对象实例
我开始Swinject
在我的应用程序中使用,我想在presenters
(Viper/MVP) 或viewControllers
(Not Viper) 之间共享我的 rootNavigator 实例。我遇到的主要问题是我想共享appRootNavigator
,presenters
但我失去了 的实例,window
因为当我注册一个新模块时swinject
会生成该类的新实例 ( AppRootNavigator
)。我如何AppRootNavigator
在presenters
.
在这部分代码中,我尝试更改 的navigator
,presenter
但它从未进入 if。
我不知道另一种方法可以做到这一点。
这是rootNavigator
:
在这里我注册了我想要使用的所有元素。
swift - SwinjectStoryboard 容器解析不同的对象(实例)
我试过 Swinject(SwinjectStoryboard) 并遇到了问题。请帮我。
添加依赖项后,我在 FirstViewController 和 SecondViewController 中有 SomeClass 的不同对象(实例)。
先感谢您!
swift - 使用带有容器的组件值得吗?
我正在使用 Swinject 进行依赖注入。我创建了一个具有容器共享实例的 DependencyManager。
}
LoginFactory 类实现Assembly
}
我阅读了大会文档,其中说它更适合用于组织 - https://github.com/Swinject/Swinject/blob/master/Documentation/Assembler.md。如果我没有使用 Assembly,那么我会使用类似的命令
两种实现都按预期工作,没有任何崩溃。我想知道为什么组装甚至是一个优势?我正在做同样的事情而不使用 Assembly 而没有开销。