Astrarium
全局调度程序库
安装
pod 'Astrarium', '~> 5.0'
主要概念
该库背后的主要想法是为了解决以下问题
- 使
AppDelegate
实现更简洁; - 停止将管理器/处理程序作为单例对象提供接口;
Astrarium 的主要概念是 Service
。在大多数情况下,服务是一个状态对象。它与应用程序的生命周期相同。通过 ServiceIdentifier
使用 Dispatcher
来访问这些服务。
初始化
要将 Astrarium 集成到您的应用程序中,您需要从 Astrarium.AppDelegate 继承您的 AppDelegate
public class AppDelegate: Astrarium.AppDelegate
然后,您需要重写服务变量并返回服务 ID 列表
public override var services: [ServiceIds?] { return [
.fabric,
.firebase,
.ui
]
}
服务实现
服务本身可以访问任何 AppDelegate
回调以执行服务所需的任何操作。以下是一个简单的 UI 服务示例
extension ServiceIds {
static let ui = ServiceIdentifier<UICoordinator>()
}
final class UICoordinator: AppService {
func someFancyMethod() {}
func setup(with launchOptions: LaunchOptions) {}
}
然后您可以访问服务的实例
Services[.ui]?.someFancyMethod()