Interface Builder可用于Cocoa应用程序中的基本依赖项注入,但是当您不想在NIB文件中实例化对象时,是否有人知道Objective-C/Cocoa的更完整的依赖项注入框架?
编辑
为了澄清,我认识到IB可以用于基本的DI,但我正在寻找一个具有更完整功能的框架,包括单独的生产和测试配置,以及Groovy或Springs.
AtomicObject的反对意见.它是以Guice的形象塑造的.
我会站出来谈谈这个问题.如上面的答案所描述的依赖注入并没有解决那些寻求使用它的核心问题.我们想要一种开发方法,其中组件A不直接实例化或引用组件B.组件A由协议绑定到组件B,组件A根本不引用它.这允许组件B在任何时候都可以被替换而不用触摸组件A.我投票但我会研究你的参考文献,因为似乎有一些人同意你的看法.我不是想辩论,只是想学习.我想更多地了解"你不需要这样做"的方法.
我想你会发现在Objective C,Ruby,Lisp等后期绑定语言中你并不需要它.就像Jamis的启示一样,当他试图建立针时,他正走上一条过于复杂的道路,重新审视了Ruby- Net :: SSH的DI框架.
以下是一些链接,希望能为您提供一些示例代码,以便在Objective C中执行类似的操作.通过类别,您可以在运行时更改任何类的行为.请参阅Mac开发人员提示 - Objective-C:类别和类别上的Cocoa API文档.基本上你不需要一些中心位置来询问"可以配置x的东西",因为你可以直接实例化TheThingThatDoesX,如果其他东西需要改变/挂钩到那个行为,它可以使用类别.
台风
差不多一年前,我发布了:https://github.com/typhoon-framework/Typhoon
该台风网站列出的主要特点.快速摘要:
非侵入性.不需要宏或XML.使用强大的Objective-C运行时方法.
使相同基类或协议的多个配置变得容易.
没有神奇的字符串 - 支持IDE重构,代码完成和编译时检查.
支持注入视图控制器和故事板集成.
支持初始化和属性注入,以及生命周期管理.
强大的内存管理功能.提供预配置的对象,没有单例的内存开销.
对循环依赖性的出色支持.
靠.它占用空间非常小,因此适用于CPU和内存受限的设备.
经过实战测试 - 用于各种Appstore特色应用
一个国际分布的核心团队(我们甚至监控StackOverflow),因此对您的任何问题的支持都是不可避免的:)
API文档和示例应用
API文档:http://www.typhoonframework.org/docs/latest/api/
我们有一个很好的示例应用程序:https://github.com/jasperblues/Typhoon-example
质量控制:
我们还拥有强大的质量控制系统.
每次提交都会触发一系列回归测试
我们保持高测试覆盖率.