# 65 : 视角转换:从机场之争看开发者的双重身份

发表于

为您每周带来有关 Swift 和 SwiftUI 的精选资讯!

肘子的话

周末与几位朋友聚会,其中一位正在参与新机场的建设管理工作。席间,大家就新旧机场的去留展开了热烈讨论。

我所在的城市颇具特色 —— 现有机场位于市区中心,与各核心区域的距离都不超过 10 公里。这样得天独厚的地理位置为市民出行带来了极大便利。然而,正是这个位置制约了机场的发展:近十年来,机场一直在满负荷运转,几乎无法开通新航线;同时,由于四周被密集的居民区包围,跑道的飞行区等级也受到限制。

正在建设的 新机场 是全球规模最大的海上机场。它不仅拥有更高的飞行区等级、更大的运营规模,还规划了完整的环机场经济区,涵盖物流、仓储等配套设施。从城市发展的战略高度来看,新机场无疑具有里程碑式的意义。

然而,即便新机场到市中心的距离仍明显短于其他同规模机场,但与现状相比还是让不少经常乘机的市民感到不适应。他们既期待新机场为城市带来的发展机遇,又希望保留旧机场以维持出行便利。

十年前的我,每年都要乘坐至少数十次航班,彼时必定会倾向于保留旧机场。但随着出行频次的减少,我现在则坚定支持政府关闭旧机场、全力发展新机场的政策。这种观点的转变让我深感触动。

人的认知往往会受所处位置的影响。作为开发者,我们希望用户能够理解产品的不足,给予改进的时间和空间;但当我们切换到用户的视角,又渴望获得完美的产品体验。

或许,这种角色转换带来的思维碰撞,恰恰是推动产品持续优化、行业不断进步的重要动力。在开发过程中,如果我们能够经常性地切换视角,站在用户的立场思考问题,相信会让我们的产品更贴近用户需求,更理解用户的抱怨,也让整个行业朝着更好的方向发展。

近期推荐

理解 _VariadicView (Understanding _VariadicView)

在 WWDC 2024 中,ForEachGroup 的增强为开发者提供了直接访问 ViewBuilder 子视图的能力,使自定义容器的构建更加便捷。然而,类似的功能自 SwiftUI 诞生之初便已存在。本文中,Kyryl Horbushko 深入剖析了未公开的 _VariadicView 家族类型及其相关协议,展示了如何利用这些内部 API 实现动态布局。此外,他还结合新旧 API,提供了适配早期系统版本的实用示例。

使用 Copilot 和 AVAudioEngine 编写雨滴音频合成器 (Using Copilot to Write a Raindrop Audio Synthesizer Using AVAudioEngine)

Matt Gallagher 通过一个雨滴音频合成器项目,探索了 VSCode + Copilot 在实际开发中的表现。文章详细记录了从提示词编写到代码优化的完整过程,并对 AI 编程助手的实用性进行了深入评估。Gallagher 指出,Copilot 在处理不熟悉的 SDK、跨语言代码迁移和算法实现等方面表现出色,但在代码质量方面仍存在诸多问题,如代码冗余、缺乏抽象以及未能充分适应目标平台特性等。

如何在退出应用后保持 macOS 应用的菜单栏项持续运行 (How to Keep Your macOS App’s Menu Bar Item Running after Quitting the App)

在默认情况下,基于 SwiftUI 开发的 macOS 应用在退出后会完全关闭,包括其菜单栏图标。Pol Piella Abadia 分享了如何实现应用主窗口关闭后依然保留菜单栏图标的功能。文章详细介绍了通过实现 NSApplicationDelegateapplicationShouldTerminate 方法和配置 TerminateReply 来阻止应用完全退出的技术方案。同时,还说明了如何妥善处理 Dock 图标和切换器图标的隐藏,使应用行为符合用户直觉,提供了更好的用户体验。

🪜 理解 @retroactive 关键字 (Swift’s Hidden Gem: Understanding the @retroactive Keyword)

在 Swift 6 中,随着 SE-0364 的引入,开发者在为非自有类型添加协议符合性时,可能会遇到编译器警告。这时,可以通过显式使用 @retroactive 来避免冲突并确保代码安全性。Omar Elsayed 通过一个为 UIImage 添加 Identifiable 的示例,展示了这一特性的用法,并探讨了其适用场景和注意事项。

并发编程逐步解析:有状态系统 (Concurrency Step-by-Step: Stateful Systems)

在 “Concurrency Step-by-Step” 系列的第三篇文章中,Matt Massicotte 通过一个更贴近现实的示例,深入探讨了 Swift 并发编程中的一些细节和注意事项。尤其是当使用 Actor 避免数据竞争时,如何有效处理重入(reentrancy)以及由此引发的逻辑竞态(logical races)。

使用 MongoKitten 在 Swift 中访问 MongoDB (Getting Started with MongoDB in Swift using MongoKitten)

MongoDB 是备受欢迎的 NoSQL 数据库,采用灵活的 JSON-like 文档存储数据。MongoKitten 是由 Joannis Orlandos 开发的纯 Swift MongoDB 驱动,基于 Swift NIO 构建,提供了类型安全的查询和 Codable 协议支持。在这篇文章中,Orlandos 详细介绍了如何将 MongoDB 通过 MongoKitten 集成到 Swift 项目中,包括数据库连接配置、BSON 数据处理以及常见数据库操作的实现方法。