For those of you that are familiar with the how and why of dependency injection (DI), we’ve created a DI framework for Objective-C called Objection. Those familiar with Google’s Guice will feel right at home with Objection.
Why use this dependency injection stuff?
DI separates the components of the application in a clean way. It builds and composes the objects of the application. This separation makes code more test friendly. Mock objects can easily be injected into tests to keep the unit tests focused on what needs to be tested. (More info on dependency injection.)
What does it look like?
A class can be registered with objection using the macros
objection_requires macro can be used to declare what dependencies objection should provide to all instances it creates of that class.
objection_requires can be used safely with inheritance.
Fetching Objects from Objection
An object can be fetched from objection by creating an injector and then asking for an instance of a particular class. An injector manages its own object context, which means that a singleton is per injector and not necessarily a true singleton.
A global injector can be registered with Objection which can be used throughout your application or library.