解析器 1.5.1

解析器 1.5.1

Michael Long 维护。



解析器 1.5.1

  • 作者:
  • Michael Long

解析器 icon

一个超轻量级的依赖注入/服务定位框架,适用于 iOS 上的 Swift 5.2。

请注意,解析器最近的一些更新可能会破坏之前使用 多个参数传递 和/或 命名服务 的代码。更多详细信息,请参阅下面的 更新 部分。

介绍

依赖注入框架支持 控制反转 设计模式。忽略技术定义,依赖注入基本上可以归结为:

| 为对象提供其完成工作所需的东西。

就是这样。依赖注入允许我们编写松散耦合的代码,因此更容易重用、模拟和测试。

更多信息,请参阅:简单依赖注入介绍。

依赖注入策略

共有六种经典的依赖注入策略

  1. 接口注入
  2. 属性注入
  3. 构造函数注入
  4. 方法注入
  5. 服务定位器
  6. 注释 (新功能)

解析器支持所有这些策略。请单击链接获取每种策略的简要描述、示例以及优缺点。

属性包装

谈到注解,Resolver现在支持使用Swift 5.1中新的属性包装语法来解析服务。

class BasicInjectedViewController: UIViewController {
    @Injected var service: XYZService
    @LazyInjected var service2: XYZLazyService
    @WeakLazyInjected var service3: XYZAnotherLazyService?
}

只需添加注入关键字,您的依赖项将自动解析。有关更多信息和其它策略,请参阅注解文档。

功能

Resolver用单文件超过700行实际代码实现,但在这些700行代码中集成了大量功能。

简要:务必阅读有关自动类型推断范围可选类型的相关内容。

使用Resolver

使用Resolver是一个简单的三步过程

  1. 将Resolver添加到您的项目。
  2. 注册您的应用程序所需的类和服务。
  3. 当需要时,使用Resolver解决实例。

为什么使用Resolver?

如前所述,Resolver是一个轻量级的依赖注入系统,代码量仅为700多行,并包含在一个文件中。

Resolver还针对性能进行设计。例如,SwinjectStoryboard是一个非常棒的依赖注入系统,但Resolver在解析依赖链方面比Swinject快大约800%。

与一些其他系统不同,Resolver完全用100%的Swift 5编写,没有Objective-C代码,方法交换或对Objective-C运行时的内部依赖。

此外,Resolver

最后,使用自动类型推断,您在使用Resolver时也倾向于编写约40-60%的依赖注入代码减少。

安装

Resolver支持CocoaPods和Swift Package Manager。

pod "Resolver"

Resolver本身只是一个源文件(Resolver.swift),因此将其下载并添加到您的项目中也很简单。

请注意,当前版本的Resolver(1.4)支持Swift 5.3,并且此版本支持的最小iOS版本为iOS 11。

阅读安装指南以获取支持早期版本的信息。

示例应用

我已经使我的Builder存储库公开。这是一个简单的master/detail风格的iOS应用程序,其中包含以下示例...

  1. 使用Resolver依赖注入系统构建MVVM架构。
  2. 使用Resolver模拟应用程序开发过程中的用户数据。
  3. 使用Resolver模拟单元测试中的用户数据。

我还用它来尝试一些使用 SwiftUI 风格的构建器模式来构建用户界面和网络请求的新代码。检查一下。

Resolver更新说明

最近的更新可能会导致Resolver中的破坏性更改。

  • Resolver 1.4改进了线程安全和性能。没有破坏性变更,但是直接访问Resolver的作用域现在已被弃用。请参阅:作用域

  • Resolver 1.3为Resolver添加了名称空间。注册名称可以提供更好的自动补全,并通过减少潜在运行时评估错误来提高代码的安全性。这是一个可能的破坏性更改。请参阅:命名实例

  • Resolver 1.2更改了向注册工厂传递参数的方式,以提供对传递和处理单个和多个参数的更好支持。这是一个破坏性更改。请参阅:传递和处理多个参数

作者

Resolver工具是由CRi Solutions公司的资深iOS负责人Michael Long设计、实施、编写文档并维护的。CRi Solutions是一家在为企业和金融机构开发尖端iOS、Android和移动网页应用及解决方案领域处于领先地位的公司。

许可协议

Resolver遵循MIT许可协议。有关更多信息,请参阅LICENSE文件。

其他资源