测试已测试 | ✗ |
Lang语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017年5月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Fernando Ortiz 维护。
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文件。