# 97 - 苹果首次在中国永久关闭了一家 Apple Store

发表于

Article Image

上周六,苹果正式永久性关闭了位于中国大连的一家 Apple Store 零售店,这是苹果首次在中国关闭直营店。该店于 2015 年开业,距今正好十年。消息传出后,网络上出现了不少相关报道,其中一些将此事解读为苹果在中国经营状况的某种信号。由于该店正好位于我所在的城市,我对这个事件有一些实地了解,想分享一些不同的观察角度。

2015 年该店开业时,其所在位置是大连最核心的商圈。开业初期确实吸引了大量苹果爱好者,加之地理位置的重要性,许多来大连的游客也将其作为打卡地,对苹果的品牌宣传和服务都起到了积极作用。然而,随着城市规模扩大以及功能区域的调整,这个曾经最核心的商圈在过去几年已被多个新兴商圈所取代。无论是人流量还是商业综合体的硬件设施都出现了明显滑坡,目前的人气不及高峰期的十分之一。同一商圈内,不少国际品牌也相继调整或撤出。

事实上,即便我现在需要去 Apple Store,也会选择苹果 2016 年在大连开设的第二家店(位于一个更加现代化的商业综合体)。过去几年间,我和身边的亲友去这个老商圈的次数屈指可数。因此,苹果直到现在才关闭该店反而超出了我的预期。恰逢该店所在商业体因股权变更导致经营业态调整,苹果选择此时关店,从经营角度看是合理的商业决策。

有传闻称,苹果可能仍会在大连保持两店配置,考虑在正在建设的新地标商业综合体(预计 2028 年开业)中开设新店。我倒是真心希望该计划能够实现,因为新址距离我住的地方不远,几乎每天散步都会路过。

苹果目前在中国拥有超过 40 家官方零售店。尽管线上购物已足够便利,但零售店在品牌宣传、文化传播、售后服务等方面的功能仍不可替代,尤其是它能为苹果爱好者提供独特的情感价值。对于苹果这样的全球性企业来说,根据市场变化调整门店布局——开设新店、关闭旧店,本就是常态化的经营行为。这次大连店的关闭虽然是“中国首次”,但更多是巧合而非转折,是城市发展变迁中的一个自然结果。

又到了每年休暑假 ⛱️ 的时候,接下来博客文章将会停更 4-5 周,期间《肘子的 Swift 周报》仍正常更新。

原创

Swift 6: Sendable、@unchecked Sendable、@Sendable、sending and nonsending

Swift 的并发模型引入了众多关键字,其中一些在命名和用途上颇为相似,容易让开发者感到困惑。本文将对 Swift 并发中与跨隔离域传递相关的几个关键字:Sendable@unchecked Sendable@Sendablesendingnonsending 进行梳理,帮助大家理解它们各自的作用和使用场景。

近期推荐

@isolated(any)

在 Swift 为并发编程引入的众多关键字中,很多对于 API 使用者来说几乎不需要深入掌握,但在某些特定场景下却至关重要。在本文中,Matt Massicotte 详细介绍了这样一个关键字——@isolated(any)

它主要解决了使用 async 函数时面临的类型擦除问题:我们无法静态地获知一个函数的隔离状态信息。@isolated(any) 通过为函数添加一个特殊的 isolation 属性来表示该函数的隔离情况(any Actor 实例或非隔离状态)。对于需要设计能够接受隔离函数并进行智能调度的 API 的开发者来说,这个功能提供了更精细的控制能力,特别是在任务调度和执行顺序保证方面。


使用异步流持续观察属性变化 (Swift Observations AsyncSequence for State Changes)

Observation 框架为 Swift 带来了原生的属性级别观察能力,但从诞生之初就缺少了一个关键功能——对属性的持续观察。虽然可以通过递归调用 withObservationTracking 来部分实现这一需求,但随着 Swift 进入严格并发时代,编写不包含并发警告的持续观察代码变得越来越困难。Keith Harrison 在本文中介绍了 Swift 6.2 新引入的功能:通过 Observations 函数,开发者可以更优雅地使用异步流的方式来对可观察对象的属性进行持续且安全的观察。这个新 API 不仅解决了并发安全问题,还提供了更符合现代 Swift 异步编程范式的解决方案。

Observations 对操作系统版本的严格限制(iOS 26/macOS 26)确实令人遗憾,这样一个实用的功能理应提供向后兼容支持。


Valkey Swift 客户端发布 (Introducing valkey-swift, the Swift Client for Valkey)

Valkey 是一个高性能键值存储系统,源自 Redis 7.2.4 的开源分支,旨在保留 BSD 许可证、规避 SSPL 与商业授权限制。不久前,Valkey 官方发布了 Swift 客户端 valkey-swift:基于 Swift Concurrency 构建,覆盖全部 Valkey 命令集,并内置连接池、管道化、集群与 Pub/Sub 支持。在Adam Fowler 的这篇文章中,你可以看到完整的使用示例与最佳实践,帮助 Swift 开发者在应用中无缝接入 Valkey 的强大能力。


在 Zed 中开发调试 iOS 应用 (Build, Run and Debug iOS and Mac Apps in Zed instead of Xcode)

凭借高效与协作友好的特性,Zed 受到不少开发者青睐,但其对 Swift 的原生支持仍相当有限,难以满足 Apple 平台开发的全流程需求。Adrian Ross 在本文中介绍了如何结合 xcode-build-server 以及自研工具 xcede,在 Zed 中实现 iOS 与 macOS 应用的构建、运行与调试,从而在很大程度上替代 Xcode 作为日常开发环境。


探索苹果端侧 AI 框架 (Exploring the Foundation Models Framework)

在 WWDC 2026 上,苹果推出 Foundation Models,进一步巩固其在端侧 AI 领域的布局。Luca Palmese 在本文中详解了如何获取系统语言模型(含特定用例适配器)、创建会话并进行完整或流式响应、借助 @Generable@Guide 实现类型安全的结构化输出,以及通过 Tool 协议让模型调用应用功能,为在本地构建聊天、摘要、分类等 AI 体验提供了完整示例。

尽管 Foundation Models 展示了端侧 AI 的潜力,但其相对较小的参数规模也让不少开发者对其能力与适用场景存疑。reddit 上正好有一则相关讨论,你也可以参与交流。


构建可扩展的 SwiftUI 组件 (Crafting SwiftUI Components for a Scalable Design System)

随着项目复杂度提升,开发者往往会在 SwiftUI 原生组件之外进行更多自定义。然而,功能堆叠过多的组件很容易陷入“构造器过载 + 紧耦合布局”的困境。muhammad osama 从这一痛点切入,通过逐步迭代示例,演示了如何构建既可维护、可扩展,又兼顾可访问性的组件,让自定义 SwiftUI 组件既具备原生视图的易用性,又能在设计系统中优雅演进。


macOS Sequoia 版本周期总结 (macOS Sequoia End of Cycle Report)

距离 macOS 26(Tahoe)正式发布还有一个月,Howard Oakley 回顾了 macOS Sequoia(15.x)一年的生命周期,总结了版本更新节奏、安全修复数量、系统体积变化以及框架增减趋势。在文章的评论区,Howard 还透露了一组耐人寻味的数据:从 Sonoma 到 Sequoia,新增 50 个公有框架,却增加了 708 个私有框架,显示苹果在不断扩展内部功能和自家应用的同时,对第三方开发者的开放支持增长有限。


大模型成本困境 (Tokens are Getting More Expensive)

AI 大模型公司获得巨额融资的一个核心假设,是随着技术进步,训练与推理成本会显著下降,从而实现理想利润。但 Ethan Ding 指出一个残酷现实:用户始终追求性能最强的模型(而低成本旧模型的使用率极低),同时上下文容量的提升让单次任务的 token 消耗呈指数级增长,使固定价格的“无限使用”模式在经济上不可持续。文章结合 Claude Code 案例,分析了行业面临的“囚徒困境”,并提出三条可能的突围路径。

每周精选 Swift 与 SwiftUI 精华!