gpt4 book ai didi

ios - 台风 - 由工厂协议(protocol)支持

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

我已经检查了让程序集实现协议(protocol)并将程序集作为属性注入(inject)到需要实现该协议(protocol)的 View Controller 的想法。这在这里解释:https://github.com/appsquickly/Typhoon/wiki/backed-by-a-factory-protocol (以 FriendListViewController 为例)。

但是,如果不使用 Storyboard,我应该如何实例化 FriendListViewController 以便 Typhoon 注入(inject)程序集?

在其他示例中,我看到您必须执行以下操作:
FriendListViewController *flvc = [[[MyAppAssembly new] activate] friendListController];

这是正确的方法吗?如果这是正确的,那么任何时候我需要一个我总是可以使用的依赖项
[[[MyAppAssembly new] activate] aDependencyX]
为什么要注入(inject)程序集?

谢谢。

最佳答案

如上所示重新实例化 Typhoon 的新实例是不正确的。

有两种方法可以实例化 Typhoon。

您可以使用任何一种方式(如果您使用 Storyboard,建议使用前者),但您应该只对每个应用程序或一组程序集执行一次

实例化 Typhoon 后,您可以通过 injecting the assembly 从一个对象图转到另一个对象图进入将实例化来自台风的新对象的对象。台风sample application for Objective-CSwift展示了很多这样的例子。

在逐渐引入 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];

Plist 集成

Plist 集成是一种实例化 Typhoon 的方法。我们在您的 AppInfo.plist 文件中放置了一些行,瞧 - Typhoon 正在运行。从那里你应该将 Typhoon 程序集注入(inject)到需要它的类中。没有 Storyboard,从 AppDelegate 或 Root View Controller 开始。

通过注入(inject) TyphoonAssembly 本身,我们可以为特定用例加载对象图 - 例如,注入(inject)所有依赖项的顶级 View Controller 。当该用例完成时,可以丢弃整个对象图。

关于ios - 台风 - 由工厂协议(protocol)支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31950751/

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