DeepResearch 调研
Swift 最佳实践的调研,开发规范 & 接口规范 & 工程化规范
以下说明结合 gemini deep research 报告和自己的补充
Part I: 从 React 到 Swift:开发范式与核心思想的跨越
1.1 核心范式:声明式UI与数据流
对于经验丰富的 React 开发者而言,向 Swift 开发的过渡在用户界面(UI)范式层面可以视为一次平稳的着陆。React 的核心理念在于 UI 是状态的函数(UI = f(state)
),这是一种声明式编程模型,开发者描述希望 UI 呈现的最终形态,而框架负责将底层状态的任何变化自动映射到 UI 的更新上。SwiftUI,作为 Apple 新一代的声明式 UI 框架,完全拥抱了相同的核心思想。它允许开发者通过声明式语法定义视图的层级结构和布局,并通过 @State
、@ObservedObject
等属性包装器将视图与底层数据模型紧密绑定。
这种范式上的共通性意味着,React 开发者在切换到 SwiftUI 时,其心智模型无需进行根本性的重构。他们已经习惯了构建由小而独立的组件组成的复杂 UI,并理解数据流如何驱动整个界面的变化。例如,在 React 中,当 useState
的值发生改变时,组件会自动重新渲染。在 SwiftUI 中,当一个用 @State
标记的属性值发生变化时,框架会自动使依赖该属性的视图失效并重新绘制。这种模式上的高度相似性使得开发者可以立即将注意力从“如何操作 UI”转向“如何管理数据和状态”,从而大幅降低了学习曲线。因此,报告建议,开发者在掌握了 Swift 语言的基本特性后,可以直接深入 SwiftUI,利用其既有的声明式 UI 经验,快速上手应用开发。
1.2 数据类型与内存管理:从垃圾回收机制到值/引用语义
尽管在 UI 范式上存在共通,但在底层数据模型和内存管理方面,Swift 与 React/JavaScript 存在根本性的差异。JavaScript 依赖于垃圾回收机制,其主要数据类型(对象)都是引用类型,而 Swift 则提供了两种截然不同的类型语义:值类型(struct
和 enum
)和引用类型(class
)。这一区别是 Swift 语言设计的核心,也是决定代码正确性、性能和并发安全性的关键所在。
struct
是一个值类型,这意味着当它被赋值或作为函数参数传递时,系统会自动创建一个完全独立的副本。这一特性从根本上杜绝了因意外共享和修改数据而引发的副作用。在 React 中,当一个对象被多个组件共享时,任何一个组件的修改都可能影响其他组件,这需要开发者通过复杂的模式(如不可变数据库或immer
)来确保状态的纯净。相比之下,Swift 的值类型在设计上就保证了数据的隔离性。当数据被复制时,每个任务或组件都拥有其独有的数据副本,从根本上消除了数据竞态(Data Races)的风险。
与之相反,class
是一种引用类型,它在赋值或传递时共享对同一内存地址的引用。这更接近于 JavaScript 的对象行为。Swift 语言的指导方针明确指出,应优先使用 struct
,因为它们更容易理解和推理,并且在并发环境中天然安全。只有当需要继承、引用计数或引用身份(===
)等 class
所特有的功能时,才应考虑使用 class
。这一策略是 Swift 现代并发模型的基础,它将并发安全的责任从开发者身上部分转移到了编译器,通过在编译时诊断数据竞态来帮助开发者更快地发现和修复错误。
1.3 Swift 类型系统:从隐式弱类型到显式强类型
对于习惯了 JavaScript 灵活但有时难以预测的类型系统的开发者而言,Swift 的显式强类型特性将带来一次重大的文化转变。Swift 是一种类型安全的语言,它要求在进行任何类型转换时都必须明确且显式地进行。例如,不能像在 JavaScript 中那样直接将数字与字符串相加,而是必须先将数字显式转换为字符串(如 String(width)
),这一要求消除了因隐式类型转换而产生的一大类运行时错误。
此外,Swift 的 Optional
类型是其类型安全哲学的重要组成部分。Optional
是一种枚举类型,它显式地表示一个变量可能包含一个值或根本不包含任何值(nil
)。这一设计迫使开发者在编译时就处理所有可能为空的情况,从而杜绝了因空引用导致的崩溃,这一类崩溃在 JavaScript 等语言中非常常见。通过这些严格的类型约束,Swift 将许多潜在的运行时错误前移到了编译时,大大提高了代码的健壮性和可靠性。
UI 框架
React/JSX
SwiftUI
状态管理
useState
/useContext
@State
/@Environment
/@Observable
类型系统
动态/弱类型
静态/强类型
并发模型
Promise
/async
/await
Task
/async
/await
/Actor
数据模型
对象(引用)
struct
(值类型)/ class
(引用类型)
Part II: Swift 开发与接口规范:构建可读、可维护的优雅代码
2.1 开发规范:超越语法,追求一致性与可读性
编写规范的 Swift 代码不仅仅是为了美观,更是为了提高团队协作效率、代码可读性和可维护性。Swift 社区存在多个被广泛认可的编码风格指南,其中最具影响力的包括 Apple 官方的 API 设计指南、Google 的 Swift 风格指南以及 Ray Wenderlich 的指南。这些指南的核心精神是一致的:避免冗余、避免歧义,并倾向于隐式而非显式,除非显式能够提升可读性。
Apple 官方的 API 设计指南
Google 的 Swift 风格指南:很长,通过列出良好的编程实践,每一点都有充分的依据,这些实践通常是所有语言的基础。
Ray Wenderlich 的风格指南:清晰、一致和简短的既定目标。每条规则后面都有完整的解释、推理和一组该做和不该做的示例。
LinkedIn Swift code style:该指南主要侧重于代码格式化,我强烈建议将其与此列表中的其他 Swift 代码样式结合使用。
Airbnb Swift Style Guide:结构合理,规则解释准确。几乎每条规则都可以通过 SwiftLint 进行 lintable,SwiftLint 是一种静态分析工具,将在下面几段中讨论。该指南甚至提供了 Xcode 编辑器设置来满足格式部分的规则,这些规则可以很容易地应用于脚本。
以命名规范为例,Google 的风格指南明确推荐遵循 Apple 的 API 风格。一个经典的例子是,静态属性或类属性的命名不应以其类型名称为后缀,例如,不应命名为 UIColor.redColor
,而应使用 UIColor.red
。这一规则并非随心所欲,而是与 Swift 语言的设计哲学深度绑定。在这种情况下,类型名 UIColor
已经提供了足够的上下文信息,重复的 Color
后缀显得多余且嘈杂。类似的,一个遵循 Swift 惯例的 API 往往通过清晰的语法来表达其意图,例如,函数名中的介词(如 with
、to
)可以使调用代码读起来像一句自然语言的句子。
为了在项目中强制执行这些规范,推荐使用像 SwiftLint 这样的自动化工具。SwiftLint 是一个高度可配置的库,它能将风格规则作为警告和错误集成到 Xcode 的 IDE 中,从而在代码提交到版本控制系统之前就捕获不符合规范的代码。通过在项目构建阶段集成 SwiftLint 脚本,团队可以确保所有成员都遵守相同的编码标准,从而显著减少代码审查中的格式和风格讨论,使开发者能够专注于更重要的架构和逻辑问题。
2.2 接口规范:原生 Codable
协议的范式革命
Codable
协议的范式革命在处理 JSON 数据时,Codable
协议已成为 Swift 语言的范式级解决方案,它将数据序列化和反序列化的复杂性简化到了前所未有的程度 15。在 Swift 4 引入 Codable
之前,开发者通常需要手动解析 JSON 数据,或者依赖第三方库如 ObjectMapper 和 SwiftyJSON 16。这些方法通常需要编写大量样板代码,并容易在运行时因路径错误或类型转换失败而导致崩溃 16。
Codable
协议通过将 Encodable
和 Decodable
两个协议结合起来,允许 Swift 模型自动实现 JSON 与 Swift 对象之间的双向转换 15。对于一个遵循 Codable
协议的 struct
或 class
,编译器会自动为其合成编码和解码的逻辑。这意味着开发者只需定义数据模型,无需编写任何解析代码 15。此外,JSONDecoder
和 JSONEncoder
类提供了灵活的配置策略,可以自动处理常见的 JSON 命名约定(如 snake_case
)到 Swift 的 camelCase
转换,以及处理不同的日期格式,进一步减少了样板代码 15。
Codable
的出现代表了 Swift 语言的一种成熟趋势:将复杂的、容易出错的任务内化为语言和标准库的内置能力。这不仅提高了开发效率,更将潜在的运行时错误(如手动解析时可能出现的键名拼写错误)前移到编译时,极大地增强了代码的健壮性。对于新项目而言,使用 Codable
协议处理 JSON 已是毫无争议的最佳实践。
2.3 接口规范:现代网络请求与原生 async
/await
的崛起
async
/await
的崛起在很长一段时间里,Alamofire 和 Moya 等第三方网络库是 iOS 开发中的标配,它们通过提供更简洁的 API 来解决 URLSession
基于 completion handler
的异步回调地狱问题 10。然而,随着 Swift 5.5 引入了原生 async
/await
语法和结构化并发模型,这一局面发生了根本性变化。
Swift 的 async
/await
语法与 JavaScript 中的对应语法非常相似,它允许开发者以一种同步、线性的方式编写异步代码 19。当一个异步函数被调用时,使用 await
关键字可以暂停当前执行,直到异步操作完成并返回结果 19。这彻底解决了回调嵌套的问题,使网络请求等异步代码变得异常清晰和易于维护 19。
更重要的是,URLSession
现在也提供了原生的 async
/await
API 21。例如,可以使用 try await URLSession.shared.data(for: urlRequest)
来发起一个网络请求,并以一种安全、简洁的方式处理数据和响应 23。当这一能力与 Codable
协议结合时,现代 Swift 的网络层变得极其精简和强大:只需几行代码,就可以完成从发起请求、等待响应、到将 JSON 数据自动解码为 Swift 模型的整个流程。
这种原生能力的提升直接挑战了传统第三方库的地位。一些社区成员甚至明确表示,对于新项目,原生 URLSession
已经足够,不再需要额外的抽象层 18。这并非意味着第三方库毫无用处,像 Alamofire 依然提供了强大的认证、请求链接、日志等高级功能,但对于大多数日常网络请求而言,原生 API 的成熟度已足以满足需求 17。这一转变的核心在于,Swift 语言的并发模型不仅仅是语法糖,它还提供了更深层次的安全性保障。通过 Actor
等机制,Swift 可以在编译时防止数据竞态,确保在并发访问共享的可变状态时不会出现问题,这是 JavaScript 的 async
/await
所无法提供的安全保证 6。
方面
原生 URLSession
Alamofire / Moya 等第三方库
简化程度简化程度
随着 async
/await
和 Codable
的支持,原生 API 已经非常简洁。
提供高度封装的 API,进一步减少样板代码,并提供额外的抽象层。
错误处理
与 Swift 原生 do-catch
错误处理机制深度集成,安全且清晰 20。
通常通过闭包或 Result 类型提供错误处理,但在复杂链式调用时可能导致回调嵌套。
并发模型
采用 Swift 结构化并发模型,通过 async
/await
和 Actor
提供编译时安全保障 6。
依赖传统闭包或 RxSwift 等响应式框架,需要开发者手动处理线程和并发安全。
依赖管理
无需外部依赖,是官方工具链的一部分。
需要通过 SPM、CocoaPods 或 Carthage 管理,可能引入额外的构建复杂性 24。
适用场景
适用于大多数日常网络请求,尤其在新项目中。
适用于需要复杂功能(如上传下载进度、高级认证、日志、请求重试)或希望统一 API 层接口的大型项目。
Part III: 工程化规范:构建稳健、高效的开发流程
3.1 项目架构:从按类型分组到按功能模块分组
对于一个可扩展、易于维护的 Swift 项目,其文件和文件夹的组织方式至关重要。传统的 iOS 项目结构倾向于按文件类型进行分组,例如,所有 UIViewController
都放在 /Controllers
文件夹下,所有 Model
放在 /Models
下 25。这种结构在项目规模较小时尚可,但一旦文件数量激增,开发者就会发现很难快速定位与特定功能相关的所有文件 25。
现代最佳实践强烈建议采用按功能模块(或功能/特性)分组的架构 25。这种方法将与特定功能相关的所有文件都放在一个独立的文件夹内,例如,一个 UserFeed
模块的文件夹可能包含 UserFeedViewController.swift
、UserFeedViewModel.swift
、UserFeedModel.swift
以及任何相关的子视图文件 25。这种模块化的组织方式与 React 的组件化思想不谋而合,因为所有相关组件的文件都被存放在一起,极大地降低了认知负担。UserFeed 模块的文件夹可能包含 UserFeedViewController.swift、UserFeedViewModel.swift、UserFeedModel.swift 以及任何相关的子视图文件 。这种模块化的组织方式与 React 的组件化思想不谋而合,因为所有相关组件的文件都被存放在一起,极大地降低了认知负担。
这种结构的好处是显而易见的:它让新成员能够快速理解项目的功能边界,当需要修改一个功能时,所有相关代码都在一个地方,无需在多个文件夹之间来回跳转 25。此外,它也为更高级的架构模式(如 MVVM、VIPER 或 TCA)奠定了坚实的基础,因为每个模块都自然地形成了一个清晰、独立的边界。为了保持根目录的整洁,可以将所有功能模块放入一个顶层文件夹(如 /Modules
),将所有通用的、跨应用的文件(如扩展、组件、服务等)放入一个单独的 /Common
文件夹中 25。
3.2 依赖管理:官方工具链的崛起
在 iOS 开发生态中,依赖管理工具已经历了显著的演变。过去,CocoaPods 和 Carthage 是主流选择,但现在,Apple 官方的 Swift Package Manager (SPM) 正在迅速崛起,并成为新项目的首选 24。
Swift Package Manager (SPM):SPM 是 Apple 官方的 Swift 包管理器,其最大优势在于与 Xcode 的深度集成 24。开发者可以直接在 Xcode 界面中添加、更新和管理依赖,无需通过额外的命令行工具或生成
.xcworkspace
文件 24。SPM 的自动依赖解析功能确保了项目使用兼容的依赖版本,极大地简化了构建过程 24。尽管其对二进制框架的支持有限,但对于一个以 Swift 为主的新项目而言,SPM 是最简单、最可靠的选择 24。CocoaPods:CocoaPods 拥有庞大的生态系统和海量可用库,在历史上占据了主导地位 24。然而,它需要通过
.xcworkspace
文件来管理项目,这可能会带来一些配置上的复杂性 24。Carthage:Carthage 的特点是简单和“去中心化”,它只负责下载和构建依赖为动态框架,将集成工作留给开发者手动完成 24。它以速度著称,尤其适用于大型项目,但其手动配置的性质可能对新手不够友好 24。
对于新项目而言,除非某个核心依赖仅支持 CocoaPods 或 Carthage,否则强烈建议优先选择 SPM 24。这一选择符合 Apple 官方工具链的发展方向,能够减少配置复杂性,并为未来的开发提供更流畅的体验。
方面
Swift Package Manager (SPM)Swift 包管理器 (SPM)
CocoaPods可可豆荚
Carthage迦太基
官方支持
Apple 官方工具 24
第三方 24
第三方 24
Xcode 集成Xcode 集成
深度集成,直接在 Xcode 中管理 深度集成,直接在 Xcode 中管理24
需要生成 .xcworkspace
文件 24需要生成 .xcworkspace 文件
需要手动配置框架 24
依赖解析
自动解析,确保版本兼容性 24
项目级管理,可能导致冲突 24
需要手动解决冲突 24
构建过程
自动处理依赖的构建和解析 24
生成工作区并集成到 Xcode 构建流程 24
将依赖构建为单独的框架,集成由开发者手动完成 24
易用性
相对简单,与 Swift 项目无缝集成 24
庞大的库生态系统,易于查找和集成第三方代码 24
以简单和速度著称 24
流行度
持续增长,尤其是在纯 Swift 项目中 24
历史悠久,使用广泛 24
以简单和速度受大型项目青睐 24
3.3 自动化与代码质量:CI/CD 流程与 SwiftLint
一个专业的软件开发团队需要一套稳健的 CI/CD(持续集成/持续交付)流程来确保代码质量和交付效率。对于 iOS 项目而言,这一流程通常由两个核心部分组成:代码质量自动化和构建/测试/部署自动化。
代码质量自动化
SwiftLint 是一个强制执行 Swift 编码风格和约定的强大工具 10。它能够自动检查代码中不符合规范的地方,如过长的行、强制解包等 12。通过将 SwiftLint 集成到 Xcode 的 Build Phase
中,开发者可以在每次构建时获得即时反馈,就像收到编译错误或警告一样 13。团队可以通过项目根目录下的 .swiftlint.yml
文件来统一配置规则,禁用或启用特定的检查,并为某些规则设置不同的严重级别(警告或错误)14。这一配置文件的存在,使得团队的编码标准从口头约定变为可被版本控制和自动执行的“活文档”,极大地提高了代码质量的一致性 12。
CI/CD 流程自动化
为了实现从代码提交到应用发布的整个流程自动化,可以使用像 Fastlane 和 GitHub Actions 这样的工具组合 27。Fastlane 是一个 Ruby 库,它将构建、测试、代码签名、上传 TestFlight 或 App Store 等一系列复杂任务封装成易于执行的 “lane
” (通道)29。例如,一个 beta
通道可以定义为:同步证书、构建应用、上传 TestFlight 29。
GitHub Actions 是一个集成在 GitHub 上的 CI/CD 服务,它允许开发者通过 .yml
文件定义自动化工作流 29。通过在 .github/workflows
目录下创建一个工作流文件,可以将 Fastlane 通道与 Git 事件(如 push
到 main
分支或 pull_request
)绑定 30。当事件触发时,GitHub Actions 会在云端的 macOS 运行器上自动执行预定义的 Fastlane 通道,完成代码检出、依赖安装、构建、测试和部署等所有步骤 27。
这一自动化流程的好处是多方面的:它确保了构建和发布过程的一致性和可靠性,消除了人为错误;它能够定期对代码库运行自动化测试,确保代码始终处于“可发布”状态;它将耗时且重复的工作从开发者手中解放出来,使他们能够专注于功能开发 28。
Part IV: 建议学习路线与精选资源
4.1 学习路径分阶段:从语言核心到生态系统
从 React 开发者向 Swift 开发者转型,应采取一个分阶段、结构化的学习路径,以避免被庞大的知识体系所淹没 32。
第一阶段:掌握语言核心。 学习 Swift 不应从一开始就陷入 Xcode 和 Apple SDK 的细节中。首先,应该专注于 Swift 语言本身,理解其基本概念,如
struct
与class
的区别、控制流、协议、泛型以及强类型系统 3。通过编写简单的命令行程序,可以建立对语言执行逻辑的直观感受,并加深对核心概念的理解。第二阶段:熟悉苹果生态系统和 UI 框架。 掌握了语言基础后,可以逐步进入 Xcode 和 SwiftUI 的世界。从官方教程开始,学习如何创建视图、管理状态,并使用苹果提供的各种 SDK 来实现具体功能,如网络请求、数据持久化等 2。
第三阶段:深化工程化和高级概念。 当能够独立构建应用后,是时候深入纯粹的编程概念了。这包括学习算法、设计模式,并深入理解 Swift 的高级特性,如并发模型(
async
/await
和Actor
)3。一些社区成员甚至建议学习基础的 C 语言,因为它能帮助开发者更好地理解内存管理等在 Swift 中被抽象出来的底层概念 32。
这一分阶段的学习方法,确保了开发者首先建立一个坚实的、可迁移的编程基础,然后在此基础上高效地学习特定平台的框架和工具。
4.2 精选学习资源:官方文档、课程与社区
为了高效地完成上述学习路径,以下是为 React 开发者精心挑选的 Swift 学习资源:
官方资源
《The Swift Programming Language Guide》 3:Swift 语言的官方权威指南。应作为第一阶段的核心参考资料,初次通读后,可作为日常开发的参考手册。
Develop in Swift
教程 2:Apple 官方推出的系列教程,通过构建小型项目来教授 Xcode、Swift 和 SwiftUI 的基础知识,非常适合初学者。Swift Playgrounds
1:一款免费的 iPad/Mac 应用,以交互式课程的形式教授 Swift 编程,学习过程充满趣味性。(但是这个太基础了)WWDC 视频 20:Apple 开发者大会的视频是了解最新技术和最佳实践的最佳途径,尤其推荐关注并发、API 设计和 SwiftUI 相关的讲座。
社区与在线课程
斯坦福大学的 CS193p 33:一个免费公开的 iOS 应用开发课程,以其严谨和深度的教学内容而备受推崇,适合希望从学术角度深入学习的开发者。
Ray Wenderlich 的博客与指南 8:以其清晰、易于理解的教程而闻名,特别适合初学者快速掌握 Swift 和 iOS 开发的基础。
社区论坛与博客
Swift.org 官方论坛 35:这是 Swift 社区讨论语言发展、工具链和寻求帮助的主要场所。这里汇集了语言核心团队和众多专家。
个人博客 37:关注像 Donny Wals、Alexey Naumov 和 FlineDev 这样的专家博客,他们经常分享关于现代 Swift 开发、架构模式和解决疑难问题的见解。
资源名称
类型类型
重点领域
备注
The Swift Programming LanguageThe Swift Programming Language
官方文档
语言核心,语法和设计哲学
权威性最强,应作为首要参考
Develop in Swift TutorialsDevelop in Swift Tutorials
官方教程
编程实践,Xcode 和 SwiftUI编程实践,Xcode 和 SwiftUI
引导式学习,适合动手实践
Swift Playgrounds斯威夫特游乐场
官方应用
编程基础,交互式学习
适合完全没有编程经验的初学者
WWDC 视频
官方视频
最新技术,深入主题
了解新框架和高级概念的最佳途径
Hacking with Swift使用 Swift 进行黑客攻击
社区课程
项目导向,SwiftUI 和 UIKit
以实践为核心,内容更新及时
Stanford CS193p斯坦福 CS193p
社区课程
编程理论,设计模式,SwiftUI
学术严谨,适合希望深入理解的开发者
Swift.org 论坛
社区论坛
语言进化,技术讨论
寻求帮助和参与社区的官方渠道
结论与建议
报告分析表明,从 React 开发转向 Swift 开发,并非一次从头开始的旅程,而是一次在新的、更强大的工程体系中应用既有软件工程原则的跨越。其核心思想在于:
范式上的平稳过渡: SwiftUI 的声明式 UI 模型与 React 高度相似,这意味着开发者可以快速上手,并利用其在组件化和状态管理方面的经验。
核心理念的根本转变: 最大的认知挑战在于从 JavaScript 的引用语义和垃圾回收机制,转向 Swift 的值类型和引用类型,以及其现代的、编译时安全的并发模型。理解
struct
的不可变性和数据隔离特性是编写健壮、高效 Swift 代码的基础。工程化生态的成熟: Swift 的工程化工具链已经高度成熟。以 SPM 为核心的官方依赖管理工具、以 SwiftLint 为代表的代码质量检查工具,以及以 Fastlane 和 GitHub Actions 为基础的 CI/CD 流程,共同构建了一个能够支持大型团队协作和持续交付的稳健体系。
对于专业开发者,本报告给出以下战略建议:
将学习重心放在语言核心: 不要急于构建 UI,先花时间深入理解 Swift 的值类型、协议和并发模型。这些知识是可迁移的,能让开发者在后续学习任何框架时都事半功倍。
拥抱原生工具链: 在新项目中,优先使用 Swift Package Manager 来管理依赖,使用 Swift 的原生
Codable
和async
/await
API 来处理网络和数据。这一策略将使项目与官方生态保持同步,减少对第三方工具的依赖,并获得更好的编译器支持和性能。建立专业的工程化流程: 从项目伊始就采用按功能模块分组的架构,并立即集成 SwiftLint 和 CI/CD 流程。自动化代码质量检查和构建部署过程,是确保项目在长期开发中保持健康、高效的关键。
引用的著作
Apple Developer Pathway, 访问时间为 八月 28, 2025, https://developer.apple.com/pathways/developer/
Welcome to Develop in Swift Tutorials - Apple Developer, 访问时间为 八月 28, 2025, https://developer.apple.com/tutorials/develop-in-swift/welcome-to-develop-in-swift-tutorials
Get Started - Swift - Apple Developer, 访问时间为 八月 28, 2025, https://developer.apple.com/swift/get-started/
Structures and Classes - Documentation - Swift.org, 访问时间为 八月 28, 2025, https://docs.swift.org/swift-book/documentation/the-swift-programming-language/classesandstructures/
Swift - Structures - Tutorials Point, 访问时间为 八月 28, 2025, https://www.tutorialspoint.com/swift/swift_structures.htm
Concurrency - Documentation - Swift.org, 访问时间为 八月 28, 2025, https://docs.swift.org/swift-book/documentation/the-swift-programming-language/concurrency/
A Swift Tour - Documentation, 访问时间为 八月 28, 2025, https://docs.swift.org/swift-book/documentation/the-swift-programming-language/guidedtour/
Missing Guide on Swift Code Style - Yet Another Swift Blog, 访问时间为 八月 28, 2025, https://www.vadimbulavin.com/swift-code-style/
Swift Style Guide - Google, 访问时间为 八月 28, 2025, https://google.github.io/swift/
The Best iOS Libraries in 2024 - Infinum, 访问时间为 八月 28, 2025, https://infinum.com/blog/best-ios-libraries-2024/
SwiftLint - Firebase Open Source, 访问时间为 八月 28, 2025, https://firebaseopensource.com/projects/firebase/swiftlint/
Getting Started with SwiftLint: Installation and Usage Guide for Cleaner Swift Code - Medium, 访问时间为 八月 28, 2025, https://medium.com/@husnainali593/getting-started-with-swiftlint-installation-and-usage-guide-for-cleaner-swift-code-386fee117fbb
How to use SwiftLint with Xcode to enforce Swift style and conventions? - Developer Insider, 访问时间为 八月 28, 2025, https://developerinsider.co/how-to-use-swiftlint-with-xcode-to-enforce-swift-style-and-conventions/
How to use SwiftLint with Xcode to enforce Swift style and conventions? - Medium, 访问时间为 八月 28, 2025, https://medium.com/developerinsider/how-to-use-swiftlint-with-xcode-to-enforce-swift-style-and-conventions-368e49e910
Json And Swift Best Practices For 2024 | Json4Swift, 访问时间为 八月 28, 2025, https://www.json4swift.com/resources/json-and-swift-best-practices-for-2024
How to serialize or convert Swift objects to JSON? - Stack Overflow, 访问时间为 八月 28, 2025, https://stackoverflow.com/questions/29599005/how-to-serialize-or-convert-swift-objects-to-json
Top 10 Swift Libraries Every iOS Developer Should Know - Empirical Edge, 访问时间为 八月 28, 2025, https://empiricaledge.com/blog/top-10-swift-libraries-every-ios-developer-should-know/
Goodbye Moya & Alamofire. Simplify Your Dependencies | by Ronan O Ciosoig - Medium, 访问时间为 八月 28, 2025, https://ronanociosoig.medium.com/goodbye-moya-alamofire-simplify-your-dependancies-cff5dd649e91
Async await in Swift explained with code examples - SwiftLee, 访问时间为 八月 28, 2025, https://www.avanderlee.com/swift/async-await/
Best practices for mastering concurrency in Swift with Async/Await ..., 访问时间为 八月 28, 2025, https://www.zen8labs.com/insights/mobile-application/best-practices-for-mastering-concurrency-in-swift-with-async-await/
Meet async/await in Swift - WWDC21 - Videos - Apple Developer, 访问时间为 八月 28, 2025, https://developer.apple.com/videos/play/wwdc2021/10132/
Use async/await with URLSession | Documentation - WWDC Notes, 访问时间为 八月 28, 2025, https://wwdcnotes.com/documentation/wwdcnotes/wwdc21-10095-use-asyncawait-with-urlsession/
HTTP Request with Async Await - SwiftUI Advanced Handbook - Design+Code, 访问时间为 八月 28, 2025, https://designcode.io/swiftui-advanced-handbook-async-await/
What's the difference? SPM vs CocoaPods vs Carthage | by KD ..., 访问时间为 八月 28, 2025, https://paigeshin1991.medium.com/whats-the-difference-spm-vs-cocoapods-vs-carthage-842f40a66ff4
The Best Way To Structure Your iOS Project | by Artiom Khalilyaev ..., 访问时间为 八月 28, 2025, https://levelup.gitconnected.com/the-best-way-to-struct-your-ios-project-a2daee7dcb45
swiftlang/swift-package-manager - GitHub, 访问时间为 八月 28, 2025, https://github.com/swiftlang/swift-package-manager
Streamlining iOS Development with CI/CD: A Comprehensive Guide | by Ahmed Elmemy, 访问时间为 八月 28, 2025, https://medium.com/@ahmed.elmemy21/streamlining-ios-development-with-ci-cd-a-comprehensive-guide-c5452a2dbaa8
How to set up a CI/CD pipeline for your iOS app using fastlane and GitHub Actions | Runway, 访问时间为 八月 28, 2025, https://www.runway.team/blog/how-to-set-up-a-ci-cd-pipeline-for-your-ios-app-fastlane-github-actions
Build, Test, Ship: Simplifying iOS CI/CD with Fastlane and GitHub Actions - Level Up Coding, 访问时间为 八月 28, 2025, https://levelup.gitconnected.com/build-test-ship-simplifying-ios-ci-cd-with-fastlane-and-github-actions-194e461d44d9
Configuring CI/CD Pipelines for iOS with Fastlane and GitHub Actions - Medium, 访问时间为 八月 28, 2025, https://medium.com/@hafizegungor/configuring-ci-cd-pipelines-for-ios-with-fastlane-and-github-actions-07efd3a837af
Best Practices for Successful CI/CD | TeamCity CI/CD Guide - JetBrains, 访问时间为 八月 28, 2025, https://www.jetbrains.com/teamcity/ci-cd-guide/ci-cd-best-practices/
Starting a new project best coding practices? - Using Swift, 访问时间为 八月 28, 2025, https://forums.swift.org/t/starting-a-new-project-best-coding-practices/72057
10 Best Swift Courses for 2025: Coding Apps for iOS - Class Central, 访问时间为 八月 28, 2025, https://www.classcentral.com/report/best-swift-courses/
Modern Swift API Design - WWDC19 - Videos - Apple Developer, 访问时间为 八月 28, 2025, https://developer.apple.com/videos/play/wwdc2019/415/
Community Overview | Swift.org, 访问时间为 八月 28, 2025, https://swift.org/community/
Swift Forums, 访问时间为 八月 28, 2025, https://forums.swift.org/
17 Best iOS Development Blogs to Read in 2021 - Blogging for Devs, 访问时间为 八月 28, 2025, https://bloggingfordevs.com/ios-development-blogs/
FlineDev Blog – Insights on Swift, Xcode, and Apple Development, 访问时间为 八月 28, 2025, https://www.fline.dev/
最后更新于
这有帮助吗?