Posted in

Swift 可组合架构为 iOS 应用开发带来 Redux 模型_AI阅读总结 — 包阅AI

包阅导读总结

1.

关键词:Swift 可组合架构、TCA、iOS 应用开发、状态管理、Redux

2.

总结:Swift 可组合架构(TCA)1.13 版本为 iOS 应用开发提供通用框架,解决常见问题,受 SwiftUI 启发,有独特概念和特性,支持多种导航模式,在 GitHub 上受欢迎。

3.

– 可组合架构

– 介绍

– 是符合人体工程学的 Swift 库

– 提供通用框架解决应用开发常见问题

– 关键概念

– 包括 state、action、reducer 和 store

– 与 SwiftUI 关系

– 受其启发,是补充,对熟悉 SwiftUI 模式的开发者友好

– 提供@ObservableState 宏,类似 iOS 16 的@Observable

– 借鉴 SwiftUI 实现可组合性

– 导航模式

– 支持基于树和基于栈的导航

– 状态共享

– 通过@Shared 实现,类似 SwiftUI @Binding

– 安装与受欢迎程度

– 可从 GitHub 克隆或从 Swift Package Index 安装

– 在 GitHub 上受欢迎

思维导图:

文章地址:https://mp.weixin.qq.com/s/X-0vo0bQZl2tsg4ArhQlpQ

文章来源:mp.weixin.qq.com

作者:Sergio??De??Simone

发布时间:2024/8/25 2:39

语言:中文

总字数:1340字

预计阅读时间:6分钟

评分:86分

标签:Swift,iOS 开发,移动应用开发,可组合架构,Redux


以下为原文内容

本内容来源于用户推荐转载,旨在分享知识与观点,如有侵权请联系删除 联系邮箱 media@ilingban.com

可组合架构(TCA,最近发布了 1.13 版本)是一个“符合人体工程学”的 Swift 库。它提供了一个通用框架用于解决构建应用程序时经常遇到的问题,包括状态管理、特性组合、副作用管理和测试。

可组合架构基于几个关键的概念,包括 state(状态)、action(动作)、reducer 和 store(存储)。Reducer 和 store 这两个概念,使用 Redux 的 React 程序员应该都熟悉,但对于原生 iOS 开发来说,它们却是两个非常新颖的设计。按照库的创建者 Brandon Williams 和 Stephen Celis 的说法,这种方法可以将大而复杂的特性分解成多个更小的部分然后组合在一起。

据库的创建者介绍,虽然可组合架构可以与 UIKit 和 Swift 一起使用,但它的设计很大程度上是受了 SwiftUI 的启发,并且对它是个很好的补充。因此,对于熟悉 SwiftUI 及其模式的开发人员来说,这个库特别符合人体工程学。

特别地,TCA 提供了一个@ObservableState宏,它的工作方式类似于 iOS 16 的@Observable,并且可以像 SwiftUI 一样检测任何的状态变化。TCA 还借用了 SwiftUI 的方法来实现可组合性,其中每个特性都是一个提供body属性的类型,并且会模拟 SwiftUI @Environment属性封装器的行为,进而使用@Dependency属性封装器来处理依赖规范。

下面的代码片段展示了如何为一个简单的加减计数器特性建模:

@Reducerstruct Feature {    @ObservableState    struct State: Equatable {        var count = 0        var numberFact: String?    }    enum Action {        case decrementButtonTapped        case incrementButtonTapped        case numberFactButtonTapped        case numberFactResponse(String)    }

var body: some Reducer<State, Action> { Reduce { state, action in switch action { } } }}

如上所示,App 的状态和供用户使用的动作都是使用特定的类型进行建模的,而body方法负责更新每个动作的状态。

TCA 的一个关键方面是状态共享,它是通过宏@Shared实现的。可以看到,它的工作原理类似于 SwiftUI @Binding,公开一个publisher属性,使其可以检测应用程序任何部分对引用做的更改。@Shared属性封装器还支持将数据持久化到内存、用户默认设置、通用文件或使用自定义机制。

在很大程度上,TCA 依赖于 SwiftUI 中常用的 UI 元素,比如sheet(item:)popover(item:)NavigationStack,但它自己也提供了更适合于状态驱动应用的导航机制。该库主要支持两种导航模式:基于树的导航和基于栈的导航。

库的作者承认,采用一个库作为应用程序架构的基础可能是一个相当具有挑战性的决定,但在某些情况下,那可能是最好的方法,而不是试图从头开始重新实现所有内容:

如果一个库的核心原则与你构建应用程序时优先考虑的事项一致,那么采用这个库可能就是一个明智的选择。最好是将一组定义良好的工具与连贯的维护历史和强大的社区结合在一起,而不是将分散在互联网博文中的许多“建议和技巧”粘合在一起。

Swift 可组合架构可以 从 GitHub 克隆或从 Swift Package Index 安装。它在 GitHub 上拥有超过 12000 颗星和 1400 个分支,以及 200 多位贡献者,这使它成为 Swift Package Index 上最受欢迎的 Swift 架构库。

原文链接:

https://www.infoq.com/news/2024/08/swift-composable-architecture/

声明:本文由 InfoQ 翻译,未经许可禁止转载。