Tags: Roy-wonji/WeaveDI
Tags
1. π μ€λ§νΈ μ±λ₯ λͺ¨λν°λ§: μ€μκ° λ©νΈλ¦ μμ§, μλ λ³λͺ© κ°μ§, CI/CD ν΅ν©μΌλ‘ μ±λ₯ μ΅μ ν μλν 2. π― TCA λΈλ¦Ώμ§ μ μ± : .testPriority, .livePriority, .contextual λͺ¨λλ‘ νκ²½λ³ μμ‘΄μ± μ°μ μμ λμ μ μ΄ 3. ποΈ Result Builder DSL: @BatchRegistrationBuilderλ‘ μ μΈμ μ΄κ³ νμ μμ ν λλ μμ‘΄μ± λ±λ‘ μμ€ν 4. π‘οΈ μλ μ΄μ νμ§: ComponentDiagnosticsκ° μ»΄νμΌ νμμ μ€λ³΅/μ€μ½ν λ¬Έμ λ₯Ό κ°μ§νκ³ ν΄κ²°μ± μλ μ μ 5. π κ°λ°μ κ²½ν ν₯μ: Swift κ²½κ³ μμ μ κ±°, νκ²½ νλκ·Έ μ΅μ ν, ν₯μλ IDE μ§μ λ° μ€λ₯ λ©μμ§
[v 3.2.1] - **λ¬Έμ κ°ν**: Swift-dependencies ν΅ν© κ°μ΄λ μ 곡 - μ€μ λ§μ΄κ·Έλ μ΄μ μμ μ ꡬ체μ μΈ νμ μ£Όμ ν¨ν΄ - μ±λ₯ λΉκ΅ νμ λ²€μΉλ§ν¬ κ²°κ³Ό - ν΅ν© κ΄λ ¨ FAQ μΉμ μΆκ° - μ μ§μ λ§μ΄κ·Έλ μ΄μ μ μν νμ΄λΈλ¦¬λ μ κ·Ό λ°©μ λ¬Έμν - νκ΅μ΄/μμ΄ λ²μ λͺ¨λ μ λ°μ΄νΈ - **DependencyValues ν΅ν©**: μμ ν μμ λ° ν μ€νΈ μΆκ° - `DependencyValuesIntegrationTests.swift`μ ν¬κ΄μ μΈ ν μ€νΈ 컀λ²λ¦¬μ§ - μ€μ νμ¨ μλΉμ€ μμ ν¬ν¨ - μ±λ₯ λ²€μΉλ§νΉ ν μ€νΈ μΆκ° - ν μ€νΈμ© Mock ꡬν μ 곡 - λΉλκΈ° 컨ν μ€νΈ μ£Όμ μμ - **μμ νλ‘μ νΈ**: WeaveDI + swift-dependencies ν΅ν© μλ μμ μ 곡 - `Example/DependencyValuesExample` ν¨ν€μ§ - λ€μν μ£Όμ ν¨ν΄ μμ° - μ€μλΉμ€ vs Mock μλΉμ€ ꡬν - μ±λ₯ λΉκ΅ ꡬν --- - **@injected ꡬν**: λ¨μν λ° μ΅μ ν - λΆνμν `dynamicMember` μλΈμ€ν¬λ¦½νΈ μ κ±° - `InjectedValues`μ λν λ λμ KeyPath μ§μ - μ¬μ©μ μ μ μμ‘΄μ± λ±λ‘μ μν λ κΉλν ν νλ¦Ώ μ 곡 - **λ¬Έμ μ λ°μ΄νΈ**: @Inject β @injected λ³κ²½ λ°μ - μ 체 API λ¬Έμ μμ μ΅μ ν - νλ‘νΌν° λνΌ μ°Έμ‘° μ μ - μ€μ μ¬μ©μ ν¨ν΄ κΈ°λ° μ½λ μμ κ°ν ---
[V 3.2.0] - **@injected Property Wrapper**: The Composable Architectureμμ μκ°μ λ°μ μλ‘μ΄ TCA μ€νμΌ μμ‘΄μ± μ£Όμ - KeyPath κΈ°λ° μ κ·Ό: `@Injected(\.apiClient) var apiClient` - νμ κΈ°λ° μ κ·Ό: `@Injected(ExchangeUseCaseImpl.self) var useCase` - μμ‘΄μ± μ μλ₯Ό μν `InjectedKey` νλ‘ν μ½ - μ£Όμ λ κ° κ΄λ¦¬λ₯Ό μν `InjectedValues` 컨ν μ΄λ - ν μ€νΈ λ° μμ‘΄μ± μ€λ²λΌμ΄λλ₯Ό μν `withInjectedValues` - Non-mutating μ κ·Ό (`mutating get` λΆνμ) - μμ ν μ»΄νμΌ νμ νμ μμ μ± - νμΌ: `Sources/PropertyWrappers/Dependency.swift` - **AppDI κ°μν**: `AppDIManager`λ₯Ό ν΅ν κ°μνλ μ± μ΄κΈ°ν - Actor μμ ν μ΄κΈ°νλ₯Ό μν `@DIContainerActor`μ ν¨κ» μ¬μ©νλ `bootstrapInTask` - μλ λ±λ‘μ μν `AppDIManager.shared.registerDefaultDependencies()` - λ³λ ¬ μ²λ¦¬λ₯Ό μν `asyncForEach`λ₯Ό μ¬μ©ν λͺ¨λ κΈ°λ° λ±λ‘ - 보μΌλ¬νλ μ΄νΈκ° μ€μ΄λ λ κΉλν μ± μ€μ - νμΌ: `Sources/Core/AppDI/AppDIManager.swift` - **@Inject Property Wrapper**: 4.0.0μμ μ κ±° μμ - νλμ μ΄κ³ νμ μμ ν μμ‘΄μ± μ£Όμ μ μν΄ `@Injected` μ¬μ© - λ§μ΄κ·Έλ μ΄μ κ°μ΄λ: `/docs/guide/migration-3.2.0.md` - **@SafeInject Property Wrapper**: 4.0.0μμ μ κ±° μμ - μ μ ν `InjectedKey` μ μμ ν¨κ» `@Injected` μ¬μ© - λ§μ΄κ·Έλ μ΄μ κ°μ΄λ: `/docs/guide/migration-3.2.0.md` - `@DIContainerActor`λ₯Ό ν΅ν ν₯μλ actor μμ μ± - ν₯μλ Swift 6 λμμ± μ§μ - νλ μμν¬ μ λ°μ νμ μμ μ± κ°ν - μμ‘΄μ± ν΄κ²°μ μ±λ₯ μ΅μ ν
PreviousNext