2012-01-08 106 views
25

任何人都可以推荐一个好的IoC框架的iOS来促进依赖注入?iOS推荐的IoC框架?

我迄今为止发现的唯一一个是Objection Framework,它显然与Guice相似(不幸的是我不熟悉它)。这是iOS的常见选择吗?是否有竞争的框架值得一试?

+0

做出了答案。我想我的答案是及时的信息,所以随时可以在更多框架可用时随时更改接受。 – 2012-01-13 22:01:51

回答

15

...是否有竞争的框架值得一试?

Objection是我可以在iOS上找到的DI库,所以如果您想要预建库,您可能会遇到它。

DI并不特别要求使用框架。如果您的应用程序很小,则可以简单地在应用程序根目录下创建所有实例并手工注入。

如果您需要的不仅仅是这些,而且现有的框架不会为您裁剪,您可以推出自己的服务定位器,然后在其上构建一个DI容器。

您还可以从另一个平台移植现有的较小框架。 .Net上有几个“小”的,例如 - NinjectSimpleInjector

这是iOS的常用选择吗?

看起来这是一个相当小的项目,因为只有一个作者/贡献者列出。提交的问题并不多。 iOS市场虽然相当大。所以我认为只有很少的iOS开发者使用这个库。

但这不一定是坏事。它似乎是created, used, and supported by a small company。它有fairly steady updates for the past year

我对类似范围的开源项目的轶事经验:我并不总是经常获得新功能,而且我经常是最终发现错误的人。但我倾向于很快获得对现有功能集的支持,并且很多关注支持我发送的电子邮件。因人而异。

+2

您对异议的看法是准确和公平的。我远不止这个项目的最大贡献者 - 这意味着我通常会添加我需要或想要创作的功能。 我的确很快回应了错误。然而,我倾向于在特定时间咀嚼相当长的一段时间,因为我想确保异议的身份不是损失,并且不会变得“臃肿”。 异议已在相对流行的应用程序中使用。根据与其相关的崩溃日志以及我执行的性能测试,它不是崩溃或性能瓶颈的原因。 – justice 2012-02-04 01:17:06

+2

最后一件事。异议经过了很好的测试:https://github.com/atomicobject/objection/tree/master/Specs – justice 2012-02-04 01:27:08

+0

@justice:你有没有使用过的应用程序列表?这可能有助于图书馆的广告,让人们知道这些(当然在网站上 - 在这里列出它们不会是犹太教)。可能需要获得许可。但是推荐书会帮助回答诸如“这个图书馆有多受欢迎?”等问题。并有助于吸引新用户。 – 2012-02-04 21:34:54

12

嗯,我希望你能原谅我有点塞在这里,但我刚刚发布了自己的DI框架的Objective-C:注射器

https://github.com/tomekc/Syringe

它是简单,重量轻的目的,我的首要目标是使其尽可能不显眼。我有很强的Java背景,所以我在Google Guice和Spring之后设计了它。

+2

+1为推荐,甚至作为插件。如果你想要一个很好的方式向人们介绍DI(因为它在Objective-C世界中是一个相当未开发的概念),请查看[NInject的“入门”wiki页面](https:// github .COM/ninject/ninject /维基/工具入门)。NInject专注于构造函数注入而不是基于属性的注入,但他们的教程构建DI概念的方式运行良好。 – 2012-01-27 21:53:11

+0

爱!正如我对异议的感觉一样,我更喜欢你如何实现自动化。异议仍然提供了更多的灵活性。什么属性?你打算注射器增长吗? – Texas 2012-11-25 02:19:13

+0

我目前在我的小型私人项目中使用它,我很乐意听到用户的一些反馈。 – 2012-11-28 09:05:22

21

台风

Typhoon-website列出的主要特点。简要总结:

  • 非侵入性。不需要宏或XML。使用利用Objective-C运行时的Objective-C or Swift API完成配置。

  • 轻量级。只需2500行代码。它占用空间非常小,适用于CPU和内存受限的设备。性能调整。

  • ,这便于具有相同的基类或协议的多个配置。

  • 没有神奇的字符串 - 支持IDE重构,代码完成和编译时检查。

  • 支持注入视图控制器和故事板集成。

  • 同时支持初始化和财产注入,加生命周期管理。

  • 强大的内存管理功能。提供预先配置的对象,而不会造成单例的内存开销。

  • 对循环依赖的出色支持。

  • 战斗考验 - 在各种功能的Appstore应用程序的使用。

  • 一个国际分布式核心团队(我们甚至监控的StackOverflow),所以您的任何问题支持是从不远处:)

API文档和示例应用程序

+3

真正理解DI是什么的唯一选择。谢谢贾斯帕! – 2013-04-07 20:03:37

+1

@Jasper Blues我看着这个和其他DI框架。即使在阅读文档之后,我仍然不太明白使用这种方式的好处,还是手工操作。使用这个或任何框架似乎如此重量级,它不是没有成本。你能建议吗? – Boon 2014-06-02 18:47:34

+0

@Boon听起来像是一个很好的StackExchange问​​题。 – 2014-06-02 23:17:31