TYPHOON
Typhoon is a framework for implementing DI containers in Objective-C and Swift applications. Its task is to make it possible to implement Dependency Injection in native iOS languages.
It is a lightweight, powerful, and functional framework that is highly appreciated by the iOS development community.
Dependency management is a must for any project that will grow and change. To create an MVP, the first version of an app, free or limited services are often used. Typhoon's official website gives an example of a weather app. In the very first version, it simply receives information from a certain free source. When you want to change the data provider, add several others, or simply change the implementation of the weather client, without DI, developers will have to do a huge amount of work manually. In particular, they will have to search for and change every piece of code that refers to old data sources and all classes that depend on them.
The larger the application, the more difficult it is to do, but even in the simplest case, the probability of errors and the number of costs will still increase. Dependency injection solves this problem by defining configurations through an initializer. Such classes can be used in those places in the application where they are needed without duplicating or fragmenting them, and without breaking other relationships. Simply put - less code in a more harmonious and easy-to-test architecture.
Typhoon fully supports all of Xcode's tools, including refactoring, auto-completion, and code review. It's non-invasive and doesn't require macros or XML, and it consists of only 3000 lines of code. To understand how Typhoon works, you need to have enough experience, but even with minimal skills, you can simply take examples of how to use the framework and transfer them to your application. In addition, the creators of the project actively support it and respond to community questions very quickly.
Typhoon can work with an unlimited number of factories with vertical or horizontal layers. With it, you can declare dependencies in any order, create multiple configurations of the same base class or protocol, inject dependencies directly into the ViewController, and much more. It has powerful memory management features and an excellent implementation of support for cyclic dependencies. In general, everything you need for Dependency Injection.
Typhoon is one of the frameworks that facilitate project development and scaling. Dependency management can be implemented in other ways, but Typhoon is the most popular out-of-the-box solution with many advantages over its self-written counterparts. It reduces the amount and complexity of code, provides centralized dependency management, and actually makes testing easier, thanks to the small number of touchpoints with the main application code and detailed documentation.