界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
效率与协作 · SKILL.md

ios-dependency-injection

ios-dependency-injection

【效率与协作】Configure protocol-based DI with property wrappers and Factory/Swinject. Use when setting up dependency injection or factory patterns in iOS.

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: ios-dependency-injection description: Configure protocol-based DI with property wrappers and Factory/Swinject. Use when setting up dependency injection or factory patterns in iOS. metadata: triggers: files: - '**/*.swift' keywords: - "@Injected" - Resolver - Container - Swinject - register - resolve

iOS Dependency Injection

Priority: P0 (CRITICAL)

Implementation Workflow

  1. Prefer initializer injection — Pass dependencies through init as primary approach.
  2. Inject protocols — Always depend on protocols instead of concrete classes for testability.
  3. Choose DI library — Use Factory for lightweight DI, Swinject for enterprise-grade container-based projects.
  4. Apply correct scoping — Singleton for app-wide services (Auth, Network); Unique/Transient for ViewModels; Graph/Cached for feature flows.

See protocol-based DI and Factory registration examples

Anti-Patterns

  • No Global Singletons: Inject services via initializer
  • No Inline Service Resolution: Pass dependencies via constructor; avoid Resolver.resolve() in business logic
  • No Concrete Class Dependencies: Depend on protocols for testability

References

Canonical response anchors

When this skill applies, preserve the following domain terminology or equivalent concrete examples in the answer when relevant:

  • Injected

Remediation anchors

  • Remediation anchors: protocol injection, Factory library, initializer injection
我的收藏