Uploaded November 2018 | Updated September 2026, 1 hour ago
Dependency injection (DI) was introduced as one of the modern best practices at a past WWDC, and is getting popular to make an app maintainable, scalable and testable. To apply DI pattern, a DI container is often used to define a dependency graph to retrieve instances with their dependencies resolved.
In this talk, the original author of Swinject, the most popular DI framework for Swift, will introduce DI pattern for an iOS app. The talk is based on the speaker's experience developing a production app used by tens of millions of users.
The talk covers:
Basic concept and motivation of dependency injection in dependency inversion principle.
Comparison of iOS architectures, e.g. MVC, MVVM and VIPER.
Introduction of a minimum architecture to apply dependency injection.
- Practical structure to configure dependency definitions using Swinject Container, Assembly and Assembler.
Unit testing with test doubles and dependency injection.
Dependency injection (DI) was introduced as one of the modern best practices at a past WWDC, and is getting popular to make an app maintainable, scalable and testable. To apply DI pattern, a DI container is often used to define a dependency graph to retrieve instances with their dependencies resolved.
In this talk, the original author of Swinject, the most popular DI framework for Swift, will introduce DI pattern for an iOS app. The talk is based on the speaker's experience developing a production app used by tens of millions of users.
The talk covers:
Basic concept and motivation of dependency injection in dependency inversion principle.
Comparison of iOS architectures, e.g. MVC, MVVM and VIPER.
Introduction of a minimum architecture to apply dependency injection.
- Practical structure to configure dependency definitions using Swinject Container, Assembly and Assembler.
Unit testing with test doubles and dependency injection.










