肘子的话
周末与几位朋友聚会,其中一位正在参与新机场的建设管理工作。席间,大家就新旧机场的去留展开了热烈讨论。
我所在的城市颇具特色 —— 现有机场位于市区中心,与各核心区域的距离都不超过 10 公里。这样得天独厚的地理位置为市民出行带来了极大便利。然而,正是这个位置制约了机场的发展:近十年来,机场一直在满负荷运转,几乎无法开通新航线;同时,由于四周被密集的居民区包围,跑道的飞行区等级也受到限制。
正在建设的 新机场 是全球规模最大的海上机场。它不仅拥有更高的飞行区等级、更大的运营规模,还规划了完整的环机场经济区,涵盖物流、仓储等配套设施。从城市发展的战略高度来看,新机场无疑具有里程碑式的意义。
然而,即便新机场到市中心的距离仍明显短于其他同规模机场,但与现状相比还是让不少经常乘机的市民感到不适应。他们既期待新机场为城市带来的发展机遇,又希望保留旧机场以维持出行便利。
十年前的我,每年都要乘坐至少数十次航班,彼时必定会倾向于保留旧机场。但随着出行频次的减少,我现在则坚定支持政府关闭旧机场、全力发展新机场的政策。这种观点的转变让我深感触动。
人的认知往往会受所处位置的影响。作为开发者,我们希望用户能够理解产品的不足,给予改进的时间和空间;但当我们切换到用户的视角,又渴望获得完美的产品体验。
或许,这种角色转换带来的思维碰撞,恰恰是推动产品持续优化、行业不断进步的重要动力。在开发过程中,如果我们能够经常性地切换视角,站在用户的立场思考问题,相信会让我们的产品更贴近用户需求,更理解用户的抱怨,也让整个行业朝着更好的方向发展。
近期推荐
理解 _VariadicView (Understanding _VariadicView)
在 WWDC 2024 中,ForEach
和 Group
的增强为开发者提供了直接访问 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 分享了如何实现应用主窗口关闭后依然保留菜单栏图标的功能。文章详细介绍了通过实现 NSApplicationDelegate
的 applicationShouldTerminate
方法和配置 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 数据处理以及常见数据库操作的实现方法。