PlugAppDelegate 1.0.6

PlugAppDelegate 1.0.6

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2017年3月

PlugAppDelegate 维护。



  • 作者
  • Sergey Makkena

介绍

AppDelegate 是一个糟糕代码的典型例子。很多不同的功能被写在方法中,在应用程序生命周期中被一次性调起。但这些都没关系了。使用 PlugAppDelegate,您可以将 AppDelegate 从其插件中解耦。每个 ApplicationService 都有与 AppDelegate 共享的生命周期。

概览

让我们看看一些代码。这是 ApplicationService 的样子

#import "LoggerApplicationService.h"

@implementation LoggerApplicationService

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     NSLog(@"LoggerApplicationService didFinishLaunchingWithOptions");
    return YES;
}

@end

就是这样。它完全像 AppDelegate 一样。把 ApplicationService 看作是子 AppDelegate。

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

#import "AppDelegate.h"
#import "LoggerApplicationService.h"
#import "PushApplicationService.h"

@interface AppDelegate ()

@end

@implementation AppDelegate


- (NSArray<ApplicationService> *)services {
    if (![super services]) {
        super.services = (NSArray<ApplicationService>*)@[[LoggerApplicationService new],
                                                         [PushApplicationService new]];
    }
    return super.services;
}


@end

它是如何工作的?

基本上,您使用反转控制。不是AppDelegate实例化您的依赖,在其生命周期的每个步骤中进行操作,而是创建与AppDelegate共享生命周期的对象,并将它们插入您的AppDelegate中。这些对象是AppDelegate的观察者。您的AppDelegate的唯一责任就是通知它们AppDelegate的生命周期事件。

示例

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

安装

PluggableApplicationDelegate 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod "PlugAppDelegate"

贡献者

Obj-C 版本: Sergey Makkena [emailnbsp;protected]

Swift 版本: fmo91, [email protected] PluggableApplicationDelegate

许可证

PlugAppDelegate 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。