ios-dependency-injection
maintained by HoangNguyen0403
star
305
account_tree
90
verified_user
MIT License
name: iOS Dependency Injection description: Standards for Protocol-based DI, Property Wrappers, and Factory/Needle. Use when configuring dependency injection or factory patterns in iOS. metadata: labels: [ios, di, dependency-injection, injection, modularity] triggers: files: ['**/*.swift'] keywords: [@Injected, Resolver, Container, Swinject, register, resolve]
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
chat Comments (0)
Sign in to join the discussion and leave a comment.
Skill Details
GitHub Stars
305
GitHub Forks
90
Created
Mar 2026
Last Updated
5个月前
development
development architecture patterns
Related Skills
Build your own?
Join 12,000+ developers contributing to the Claude ecosystem.
No comments yet. Be the first to share your thoughts!