Typhoon:Assembly 和 Storyboard 创建的 ViewControllers

Posted

技术标签:

【中文标题】Typhoon:Assembly 和 Storyboard 创建的 ViewControllers【英文标题】:Typhoon: Assembly and Storyboard-Created ViewControllers 【发布时间】:2013-09-25 07:28:03 【问题描述】:

如何将 Typhoon 与 ios 故事板一起使用,其中视图控制器由系统隐式生成?我需要在 prepareForSegue 方法中做一些特别的事情吗?

【问题讨论】:

【参考方案1】:

积压中有一个 TyphoonStoryBoard 组件,但尚未实现(请参阅下面的更新)。

组件工厂目前有一个 -injectProperties: 方法,您可以使用该方法在组件实例化后对组件应用依赖注入,例如。由故事板。

现在,您可以继承 UIStoryboard 并通过覆盖调用视图控制器上的 -injectProperties::

– instantiateInitialViewController
– instantiateViewControllerWithIdentifier:

示例:

- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier 
  id instantiatedViewController = [super instantiateViewControllerWithIdentifier:identifier];
  [[TyphoonComponentFactory defaultFactory] injectProperties:instantiatedViewController];
  return instantiatedViewController;

更新:

TyphoonStoryBoard 集成现已完成(待定文档),并致力于掌握。它将在未来几周内作为 Typhoon 2.0 的一部分发布。

【讨论】:

听起来很棒。 Typhoon 会让基于故事板的视图控制器更容易测试吗?和他们一起考虑 TDD 很痛苦。 @fatuhoku 是的,DI 的所有常规好处:易于测试、易于维护、良好的凝聚力等。 啊哈。如果我可以提出一个建议,那就是该框架需要在用户指南中提供更多示例。例如,情节提要令人困惑,因为在实际代码中,运行时决定加载哪些 VC,并有效地为您管理视图控制器依赖项。目前尚不清楚台风如何拦截这个过程,如果有的话。我已经看到您需要 TyphoonFactory 或类似的东西,但它是否知道正在发生的转场? Typhoon 2.0 功能发布时会有文档说明。随着 Typhoon 2.0 的发布,我们将专注于提供更好的文档、教程、博客等。 . (甚至可能有一本书)。 .同时,请随时提出问题,在 *** 等上提问。感谢您成为 Typhoon 的早期采用者!【参考方案2】:

TyphoonStoryboard 非常简单

通过bootstrapping Typhoon in your plist,连同通常的 UILaunchStoryboardName 和 UIMainStoryboardFile,Typhoon 将确保所有 Storyboard 都是 TyphoonStoryboard 的实例。与普通 Storyboard 完全一样使用,另外还有一个好处是依赖项将根据 TyphoonAssembly 类中的定义注入。

您可以选择为每个 viewController 指定应使用的定义。为此,请在情节提要中使用“typhoonKey”运行时属性。否则将使用与控制器类匹配的定义。示例:

此功能的文档是 here。

【讨论】:

以上是关于Typhoon:Assembly 和 Storyboard 创建的 ViewControllers的主要内容,如果未能解决你的问题,请参考以下文章

协议中的 Typhoon 和 @objc 限制

如何使用 Typhoon 为集成测试注入虚假、存根或模拟依赖项

[VIDEO] Inside a Tornado, and the Aftermath of Typhoon Soudelor

带有初始化程序崩溃应用程序的台风参数注入

如何找到哪个函数打开了套接字?

c# assembly 反射 dll和xml