台风 - 由工厂协议支持
Typhoon - Backed by a factory protocol
我已经检查了让程序集实现协议并将程序集作为 属性 注入到需要实现该协议的视图控制器的想法。这在这里解释:https://github.com/appsquickly/Typhoon/wiki/backed-by-a-factory-protocol(以 FriendListViewController 为例)。
但是,如果不使用故事板,我应该如何实例化 FriendListViewController 以便 Typhoon 注入程序集?
在其他示例中,我看到您必须执行以下操作:
FriendListViewController *flvc = [[[MyAppAssembly new] activate] friendListController];
这是正确的方法吗?如果这是正确的,那么任何时候我需要一个我总是可以使用的依赖项
[[[MyAppAssembly new] activate] aDependencyX]
为什么要注入程序集?
谢谢。
如上所示重新实例化 Typhoon 的新实例是不正确的。
有两种方法可以实例化Typhoon。
- 使用plist integration(仅限iOS)
- 使用 activation
您可以使用任何一种方式(如果您使用故事板,建议使用前者),但是您应该只对每个应用程序或程序集执行一次。
实例化 Typhoon 后,您可以从一个对象图继续到另一个对象图,injecting the assembly into the object that will be instantiating a new object from Typhoon. The Typhoon sample application for Objective-C or Swift 显示了很多这样的例子。
在逐渐引入 Typhoon 的遗留应用程序中,您可能希望从本身未从 Typhoon 实例化的 class 实例化 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 程序集注入到需要它的 classes 中。没有故事板,从 AppDelegate 或根视图控制器开始。
通过注入 TyphoonAssembly 本身,我们可以为特定用例加载对象图 - 例如,注入所有依赖项的顶级视图控制器。当该用例完成时,可以丢弃整个对象图。
我已经检查了让程序集实现协议并将程序集作为 属性 注入到需要实现该协议的视图控制器的想法。这在这里解释:https://github.com/appsquickly/Typhoon/wiki/backed-by-a-factory-protocol(以 FriendListViewController 为例)。
但是,如果不使用故事板,我应该如何实例化 FriendListViewController 以便 Typhoon 注入程序集?
在其他示例中,我看到您必须执行以下操作:
FriendListViewController *flvc = [[[MyAppAssembly new] activate] friendListController];
这是正确的方法吗?如果这是正确的,那么任何时候我需要一个我总是可以使用的依赖项
[[[MyAppAssembly new] activate] aDependencyX]
为什么要注入程序集?
谢谢。
如上所示重新实例化 Typhoon 的新实例是不正确的。
有两种方法可以实例化Typhoon。
- 使用plist integration(仅限iOS)
- 使用 activation
您可以使用任何一种方式(如果您使用故事板,建议使用前者),但是您应该只对每个应用程序或程序集执行一次。
实例化 Typhoon 后,您可以从一个对象图继续到另一个对象图,injecting the assembly into the object that will be instantiating a new object from Typhoon. The Typhoon sample application for Objective-C or Swift 显示了很多这样的例子。
在逐渐引入 Typhoon 的遗留应用程序中,您可能希望从本身未从 Typhoon 实例化的 class 实例化 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 程序集注入到需要它的 classes 中。没有故事板,从 AppDelegate 或根视图控制器开始。
通过注入 TyphoonAssembly 本身,我们可以为特定用例加载对象图 - 例如,注入所有依赖项的顶级视图控制器。当该用例完成时,可以丢弃整个对象图。