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

ios-state-management

ios-state-management

【效率与协作】Implement reactive state with Combine, Observation framework, and UDF patterns. Use when implementing state management with Combine, @Observable, or reactive patterns in iOS.

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

技能说明

GitHub

name: ios-state-management description: Implement reactive state with Combine, Observation framework, and UDF patterns. Use when implementing state management with Combine, @Observable, or reactive patterns in iOS. metadata: triggers: files: - '**/*.swift' keywords: - Observable - "@Published" - PassthroughSubject - "@Observable" - "@Namespace"

iOS State Management

Priority: P0 (CRITICAL)

Implementation Workflow

  1. Choose observation approach — Use @Observable (iOS 17+) for modern SwiftUI; Combine with @Published for UIKit or broader compatibility.
  2. Expose state clearly — Use UDF pattern: ViewModel exposes Input enum (events) and Output struct (state).
  3. Manage subscriptions — Store Combine subscriptions in Set<AnyCancellable> with .store(in: &cancellables).
  4. Dispatch to main thread — Use @MainActor or .receive(on: DispatchQueue.main) for UI updates.
  5. Use exhaustive ViewState — Prefer single ViewState enum (.loading, .success(data), .error(failure)).

See Combine and Observation framework examples

Anti-Patterns

  • No Uncleared Subscriptions: Always use .store(in: &cancellables)
  • No Background UI Updates: Use .receive(on: .main) or @MainActor
  • No Manual objectWillChange.send(): Use @Published or @Observable instead

References

我的收藏