Object Scopes 指定了生成的实例在系统中是如何被共享的。 如何指定 scopecontainer.register(Animal.self) { _ in Cat() } .inObjectScope(.container)例子如上,每次 register 方法,都会返回 ServiceEntry 实例,然后调用其 inObjectScope 方法,会设置其 objectSco...
原创 2021-05-30 19:21:22
597阅读
# iOS开发中的Swinject原理 ## 引言 在iOS开发中,随着应用规模的增大,我们会面临越来越复杂的依赖管理问题。手动管理依赖关系不仅可能导致代码变得难以维护,也影响了测试的便捷性。为了解决这些问题,许多开发者转向了依赖注入(Dependency Injection, DI)框架。Swinject是一个流行的Swift依赖注入框架,旨在为我们的项目提供灵活且易于管理的依赖关系。 #
原创 2024-10-12 05:23:47
247阅读
核心是 Container类。它提供了两类方法,register 和 resolve。 为了找到在 resolve 时,能够找到对应的方法,内部维护了一个叫做services 的字典。key 是根据 serviceType、name、argumentsType 确定的。在 register 时,会字典里加入一个条目。在 resolve 时,会根据字典,找到对应的 ServiceEntryPro...
原创 2021-05-30 19:21:23
962阅读
可能存在循环依赖,比如 Parent 强制有 Child, Child 弱持有 Parent。具体实现如下。Parent 初始化时,必须传入 Child,而 Child 初始化不必传入 Parent。protocol ParentProtocol: AnyObject { }protocol ChildProtocol: AnyObject { }class Parent: ParentProto...
原创 2021-05-30 19:21:21
364阅读