gpt4 book ai didi

ios - 台风 - child 项目

转载 作者:行者123 更新时间:2023-11-29 12:16:06 27 4
gpt4 key购买 nike

在我逐步引入 Typhoon 的遗留应用程序中,如果我想从一个本身不是从 Typhoon 实例化的类中实例化 Typhoon 的实例,我可以在我的 AppDelegate 中放置以下内容:

[self.assembly makeDefault];

以及我程序集中 AppDelegate 的定义:

- (AppDelegate *)appDelegate
{
return [TyphoonDefinition withClass:[PFAppDelegate class]
configuration:^(TyphoonDefinition *definition)
{
[definition injectProperty:@selector(assembly) with:self];
}];
}

我可以在其他地方执行以下操作来获取程序集的实例:

MyAssembly* assembly = [MyAssembly defaultAssembly];

没关系,但假设我的应用程序由以下部分组成:

  • 包含各种子项目的主项目。
  • 主项目有对 Typhoon 的 pod 依赖,程序集在这里编写,并具有要注入(inject)到他的子项目中的对象的定义。

因为子项目不知道主项目,所以我无法#import 程序集并使用:
MyAssembly* assembly = [MyAssembly defaultAssembly];

在这种情况下我应该如何进行?

最佳答案

在典型的 Typhoon 应用程序中,您将拥有:

  • TyphoonComponentFactory 的一个实例
  • 将一些程序集分成逻辑架构层。这些程序集可以相互引用。

程序集包含对象实例化的蓝图(或配方)。在启动时,所有这些信息都被收集并存储在 TyphoonComponentFactory 中。

应用程序启动后,程序集本身基本上会被丢弃,但是您的程序集接口(interface)仍然可以作为 TyphoonComponentFactory 前面的外观 - 程序集接口(interface)的方法调用使用 Objective-C 转发并转换为 [factory componentForKey]

因此

  • 您可以将 TyphoonComponentFactory 转换为您的任何程序集接口(interface),它会起作用。
  • 您可以将您的任何装配接口(interface)转换为您的子装配接口(interface)并且它会起作用。
  • 您可以将程序集接口(interface)转换为 TyphoonComponentFactory

此建议假设您有一个 TyphoonComponentFactory 实例。在一个非常复杂的应用程序中,您可能有更多,例如一个用于引擎或库,一个用于主应用程序,并且这些部分不需要知道其他部分由 Typhoon 支持。但是,如果您有一组相互引用的程序集,并在启动时一起实例化以形成一个 TyphoonComponentFactory,那么您可以在它们之间进行转换。只需使用:

MyChildAssembly *childAssembly = (MyChildAssembly) parentAssembly;

关于ios - 台风 - child 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31969086/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com