肘子的 Swift 周报 #046| 无警告编译并非 Swift 6 的初衷

2024-08-27 17:11:23 浏览数 (2)

欢迎访问 weekly.fatbobman.com[1] 订阅本周报的中英文电子邮件版本。你也可以直接访问我的网站 肘子的 Swift 记事本[2] 更多的周报内容。

肘子的话

无警告编译并非 Swift 6 的初衷

最近,我着手重构自己的一个 App,其中 Swift 6 的完整支持成为了一个重要考量。在这个过程中,我首先尝试让自己构建的第三方库在 Swift 6 模式下实现完美编译。

这些库的代码并不复杂,经过一番调整,大多数都能在 Swift 6 模式下实现无警告编译。然而,这个结果并没有让我感到特别欣喜。回顾修改过的代码,我意识到所做的改动更像是为了讨好编译器,而非从整体设计的角度出发,用全新的视角来应对并发安全的挑战。

Swift 6 通过更严格的编译器检查,试图在复杂的多线程环境中提前规避风险。虽然编译器能为开发者提供不少帮助,但我们不应过度依赖这些安全提示。相反,我们应该在深入理解 Swift 新并发工具的基础上,重新思考如何构建既符合编译需求又真正安全可靠的代码结构。

可以预见,Swift 6 会在不短的一段时间内会给开发者带来额外的困扰和负担,尤其是对初学者而言。随着新框架和 API 大量采用新的并发工具,Swift 语言的新手可能会过早地面对这些深奥问题,这或许会影响 Swift 的推广和应用。

然而,从另一个角度来看,AI 的快速发展既降低了某些领域的入门门槛,又要求开发者掌握更多技能并具备融会贯通的能力,以免被 AI 取代。Swift 6 带来的挑战,某种程度上也为人类开发者筑起了一道新的防线。毕竟,在相当长的一段时间内,AI 仍难以具备优秀的抽象思维和整体规划能力。

因此,为了在 AI 时代保持自身价值,我们不应将“代码在 Swift 6 模式下无警告编译”作为唯一目标。相反,我们应该将其视为一个契机,去深入理解语言的演进,提升自己的系统设计能力,真正掌握并发编程的精髓。

前一期内容全部周报列表

近期推荐

如何在 Xcode 中使用 EditorConfig 文件 ( How to use EditorConfig files in Xcode )[3]

Pol Piella[4]

开发者在处理多个项目时,往往会遇到不同的编码风格和约定,这使得每次切换项目时都需要手动调整 Xcode 的编辑器设置,这不仅麻烦,还容易出现不一致的代码格式问题。为了解决这个问题,Xcode 16 新增了对 EditorConfig 文件的支持,可以为每个项目以编程方式定义编辑器设置。Pol Piella 在本文中对这个新功能做了详细的介绍,并分享了如何在项目中使用 EditorConfig。

值得注意的是,在 Xcode 16 beta 6 中,每次修改 EditorConfig 配置后,需要重启 Xcode ,新配置才能起作用,这是一个已知 Bug。

SwiftUI for Mac 2024[5]

Sarah Reichelt[6]

在本文中,Sarah Reichelt 探讨了 SwiftUI 在 2024 年的一些新特性。作为书籍 macOS by Tutorials[7] 的作者,Reichelt 尤其展示了很多在 WWDC 2023 和 WWDC 2024 中为 macOS 引入的 SwiftUI 新功能。文章涵盖了窗口管理、标签页语法更新、预览功能改进,以及新增的颜色混合与网格渐变效果等内容。作者认为,经过多年发展,SwiftUI 逐渐统一了 Apple 各个平台的代码,实现了跨平台代码的高度共享,但开发者在开发过程中仍需考虑不同平台的特性,以确保应用的用户体验与平台的设计理念相一致。

Xcode Cloud 入门 ( Getting Setup With Xcode Cloud )[8]

Darryl Bayliss[9]

Xcode Cloud 是苹果提供的持续集成和持续交付 (CI/CD) 平台,帮助开发者简化构建、测试、签名和发布应用的过程。在本文中,Darryl Bayliss 详细讲解了从设置到工作流管理的整个过程,包括创建和配置工作流、设置触发条件、运行 Shell 脚本,以及查看工作流结果,并提供了大量实用的建议和最佳实践。

跨平台 Swift:WebAssembly ( Cross-Platform Swift: WebAssembly )[10]

Point-Free[11]

在这篇文章中,Brandon Williams 和 Stephen Celis 展示了如何将 Swift 与 WebAssembly 结合,用于跨平台开发。他们详细演示了从设置项目到实现与浏览器交互的整个过程,包括如何在 Xcode 中配置 WebAssembly、使用 JavaScriptKit 库操作 DOM 以及利用 Swift 的 Observation 框架进行数据绑定。通过这种方法,开发者可以用熟悉的 Swift 代码在浏览器中构建应用,并与 iOS 平台共享相同的模型和业务逻辑。这为 Swift 跨平台开发开辟了新的可能性,并展示了如何用一种代码构建面向不同平台的应用。

我的代码编辑器使用史,从语法高亮到 AI 生成[12]

宝玉[13]

本文回顾了宝玉自 1999 年开始使用代码编辑器的历程,展示了从简单的文本编辑到现代 AI 辅助代码生成的技术演变。通过个人经验,作者讲述了在不同开发阶段中使用的编辑工具及其对开发效率的提升。文章从最初的记事本、语法高亮到智能感知,再到如今的 AI 生成,展现了编辑器工具如何随着技术进步不断演变。作者认为,随着技术的演进,开发工具的改进是不可避免的,重要的是如何借助这些工具更高效地构建优质软件,而不是纠结于手写代码的过程。

更新:几个在 SwiftUI 中使用惰性容器的技巧和注意事项[14]

Fatbobman( 东坡肘子 )[15]

上周有网友反馈,当 List 中的子视图的顶层结构类型为 _ConditionalContent 时,SwiftUI 的优化机制会失效。经过测试,我确认了这个问题,并提出了解决方案。此现象的具体描述和相关注意事项已经更新至当前文章中,供开发者参考。

THANK YOU

如果你觉得这份周报或者我的文章对你有所帮助,欢迎 点赞赞赏,并将其 转发 给更多的朋友。

参考资料

[1]

weekly.fatbobman.com: https://weekly.fatbobman.com

[2]

肘子的 Swift 记事本: https://fatbobman.com

[3]

如何在 Xcode 中使用 EditorConfig 文件 ( How to use EditorConfig files in Xcode ): https://t.ly/X_t-Y

[4]

Pol Piella: https://x.com/polpielladev

[5]

SwiftUI for Mac 2024: https://t.ly/mIRjk

[6]

Sarah Reichelt: https://mastodon.social/@troz

[7]

macOS by Tutorials: https://troz.net/books/macos_tutorials/

[8]

Xcode Cloud 入门 ( Getting Setup With Xcode Cloud ): https://t.ly/buSxX

[9]

Darryl Bayliss: https://x.com/darryl_bayliss

[10]

跨平台 Swift:WebAssembly ( Cross-Platform Swift: WebAssembly ): https://t.ly/iiB6h

[11]

Point-Free: https://x.com/pointfreeco

[12]

我的代码编辑器使用史,从语法高亮到 AI 生成: https://t.ly/ur7L2

[13]

宝玉: https://x.com/dotey

[14]

更新:几个在 SwiftUI 中使用惰性容器的技巧和注意事项: https://t.ly/a-tBT

[15]

Fatbobman( 东坡肘子 ): https://x.com/fatbobman

0 人点赞