ios-dependency-injection
Standards for Protocol-based DI, Property Wrappers, and Factory/Needle. Use when configuring dependency injection or factory patterns in iOS.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
iOS Dependency Injection Standards
Priority: P0
Implementation Guidelines
Protocol-Based DI (Manual)
-
Initializer Injection: Preferred method. Pass dependencies through
init. - Abstractions: Inject protocols instead of concrete classes to facilitate testing (Mocks/Stubs).
Modern Property Wrappers (Factory/Resolver)
-
Factory: Use the
Factorylibrary for lightweight, type-safe navigation-friendly DI. - Swinject: Use for enterprise-grade container-based DI in large modular projects.
-
Injected: Use
@Injectedproperty wrappers for cleaner syntax in ViewModels.
Scoping
- Singleton: Use for app-wide services (Auth, Network, Database).
- Unique/Transient: Default for ViewModels and temporary workers.
- Graph/Cached: Use for shared data within a specific feature flow (Coordinator scope).
Anti-Patterns
-
Singletitis:
**No global Shared singleton access everywhere**: Inject the service via initializer. -
Service Locator:
**No Resolver.resolve() inside logic**: Pass dependency via constructor or property wrapper. -
Concrete Dependency:
**No direct class instantiation**: Depend on protocols for testability.
References
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-03-11
- Index updated
- 2026-03-11
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!