PluggableApplicationDelegate 0.2.0

PluggableApplicationDelegate 0.2.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2017年5月
SwiftSwift 版本3.0
SPM支持 SPM

Fernando Ortiz 维护。



  • 作者:
  • fmo91

PluggableApplicationDelegate

介绍

AppDelegate 是一个传统的糟糕代码示例。很多行代码都在一起放在一起,在应用生命周期的各个方法中调用。但所有这些问题都解决了。使用 PluggableApplicationDelegate,您将 AppDelegate 与您连接的服务解耦。每个 ApplicationService 都有自己的生命周期,并与 AppDelegate 共享。

概览

看看一些代码。以下是如何实现一个 ApplicationService

import Foundation
import PluggableApplicationDelegate

final class LoggerApplicationService: NSObject, ApplicationService {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {

        print("It has started!")

        return true
    }

    func applicationDidEnterBackground(_ application: UIApplication) {
        print("It has entered background")
    }
}

这就是全部内容。它与 AppDelegate 完全相同。把 ApplicationService 想成是子AppDelegate。

AppDelegate 中,您只需继承自 PluggableApplicationDelegate 来注册服务。

import UIKit
import PluggableApplicationDelegate

@UIApplicationMain
class AppDelegate: PluggableApplicationDelegate {

    override var services: [ApplicationService] {
        return [
            LoggerApplicationService()
        ]
    }
}

是的。就是这样。很简单。

这是如何工作的?

您可能想阅读我的Medium 关于 Pluggable App Delegate 的帖子。基本上,您进行控制反转。不是让 AppDelegate 实例化您的依赖关系,在其生命周期的每个步骤执行操作,而是创建共享 AppDelegate 生命周期的对象,并将它们插入到 AppDelegate 中。这些对象是 AppDelegate 的观察者。您的 AppDelegate 只有以下责任:通知它们关于其生命周期事件。

示例

要运行示例项目,请克隆仓库,然后首先从 Example 目录中运行 pod install

要求

PluggableApplicationDelegate 需要 Swift 3.0 或更高版本。

安装

PluggableApplicationDelegate 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile

pod "PluggableApplicationDelegate", :git => "https://github.com/fmo91/PluggableApplicationDelegate"

作者

fmo91,[邮箱地址保护]

许可证

PluggableApplicationDelegate基于MIT许可证可用。更多信息请参阅LICENSE文件。