肘子的话
近日,Pixelmator 官方宣布即将加入苹果,目前正在等待监管部门的最终审批。他们承诺,旗下主打产品——Pixelmator Pro、iOS 版 Pixelmator 以及 Photomator 在短期内将不会发生重大变化。
作为深耕苹果生态的精品开发团队,Pixelmator 以其高性价比和用户友好的商业模式在市场上独树一帜。在订阅制盛行的今天,他们仍坚持买断制的定价策略,并持续为用户提供更新支持,展现了难得的产品情怀。虽然在功能深度上无法与 Adobe 系列产品比肩,但 Pixelmator 早在数年前就率先引入了 AI 辅助处理功能。如果这些技术能够与 iOS 原生照片应用融合,将极大提升系统级图像处理能力。可以预见,在即将到来的 WWDC 25 上,照片应用很可能再次迎来重大更新,这对当前备受诟病的 iOS 18 照片应用交互体验来说无疑是一针强心剂。
对普通用户而言,这次并购无疑是个好消息——能够在不增加支出的情况下享受更优质的系统服务。然而,对依托苹果生态发展的第三方开发者来说,这种并购案例却可能引发担忧。
每年的 WWDC 不仅是开发者了解新技术的盛会,也是很多中小开发者战战兢兢检视自身业务存续的时刻。系统功能的扩张往往意味着某些第三方应用的市场空间被挤压。以苹果收购 Dark Sky 后推出的新版天气应用为例,尽管部分用户认为其未能完全达到 Dark Sky 的专业水准,但其信息量、及时性和界面表现已足以满足大多数用户需求,这实际上扼杀了天气类应用的市场空间。
纵观苹果的创意工具发展史,从 FinalCut 到 Logic Pro,许多重量级软件都是通过并购而来,且保持着不俗的产品力。Pixelmator 很可能成为这个产品矩阵中的新成员。近年来,苹果逐渐放弃了针对专业用户的 Shake、Aperture 等产品,转而专注于服务大众市场。考虑到自媒体与短视频时代的蓬勃发展,这一战略调整堪称明智之举。
然而,这种战略转向也带来了一个值得深思的现象:苹果似乎在刻意规避与专业领域巨头的正面竞争,转而挤占中小开发者的市场份额。无论这是否出于战略考量,长远来看都可能影响第三方开发者的创新积极性。
作为一家以硬件销售为核心的科技公司,苹果致力于构筑更强大的生态护城河无可厚非。但不应忽视的是,众多第三方开发者同样是这道护城河的重要建设者。他们是生态系统的盟友,理应得到更多的理解与支持,而非被当作市场扩张的牺牲品。或许苹果在增强生态体系的同时,也需要不断审视与这些创新者的关系,找到一个更平衡的发展之道。
原创
从项目重构说起:五个 Swift 模块分享
五年前,我开始学习 Swift 时怀着一个简单的愿望:开发一款 App 来管理自己的体检数据,协助术后的健康监护。【健康笔记】从 2.0 版本发布至今已有四年。近期重读这个项目的代码(其中 95% 是四年前写就),总觉得难以面对 —— 坦白说,我认为写得很差。今年九月,我下定决心对这个 App 进行彻底重构。在这个过程中,我萌生了一个想法:何不将其中一些功能模块提炼出来,以开源的方式回馈社区?本文将介绍这两个月来我开源的几个工具库。
近期推荐
苹果正在扼杀 Swift (Apple is Killing Swift)
Jacob Bartlett 的这篇文章在社区引发了广泛讨论。他指出,Swift 在 Apple 的控制下逐渐变得复杂且不透明,已偏离 Chris Lattner 的初衷,越来越多地受到商业动机的影响。尽管现状令人担忧,但 Bartlett 认为,Swift 仍有机会通过适当调整回归简洁和易用的设计理念,从而逐步成为通用编程语言,而不仅仅是局限于 Apple 的封闭生态系统。
万物皆有两面。在大公司的资源支持下,一门新兴语言可以迅速崛起,但这同时也可能带来控制权的过度集中,社区的参与感随之减弱。历史上,这样的例子不胜枚举。对于 Swift 的未来,苹果若能调整心态,不仅不会削弱 Apple 生态的独特优势,反而能推动 Swift 向更广泛的应用领域拓展,实现更长远的发展。
KWDC24 技术分享 —— iOS 性能优化的三大难点及其解决方案
近期,戴铭应邀参加了在首尔举办的 KWDC24(Korea Worldwide Developers Conference 2024),并就 iOS 性能优化的三大难点及其解决方案进行了深入的技术分享。本文是对分享内容的系统整理,主要涵盖以下几个方面:内存问题的诊断与优化、App 启动性能优化以及包体积优化。
作者还记录了在首尔参会期间的见闻与感受。作为技术布道者,戴铭的演讲和文章最显著的特点是图文并茂 —— 他总会为读者准备大量亲手绘制的技术插图,让复杂的概念变得直观易懂。
了解 Swift 中的 actor (Understanding actors in Swift)
Actor 模型由 Carl Hewitt 于 1973 年首次提出,这一突破性的并发计算模型此后深刻影响了诸多编程语言的发展。Swift 语言在 5.5 版本中引入了 Actor 类型作为其并发编程的核心解决方案,标志着 Swift 在并发安全领域迈出了重要的一步。
在本文中,Natascha Fadeeva 系统地介绍了 Swift Actor 的原理、使用方法和注意事项。随着越来越多的开发者开始采用 Swift 6 的开发模式,Actor 的重要性日益凸显 —— 它不仅能显著降低并发编程的心智负担,更为开发者提供了一种优雅且安全的方式来处理并发问题,使得编写健壮的并发代码变得非常简单。
AnchoredRelativeFormatStyle:Date RelativeFormatStyle 的隐藏替代方案 (AnchoredRelativeFormatStyle: The Hidden Replacement for Date RelativeFormatStyle)
RelativeFormatStyle
为开发者提供了一种简洁的方式来生成相对时间的文本表示,但它存在一个显著的局限:依赖 Date()
作为当前时间的隐式基准( 不是纯函数 )。这不仅增加了测试和预览的复杂性,还可能导致不必要的性能开销。
在本文中,Alejandro Martinez 介绍了一个鲜为人知的替代方案—— AnchoredRelativeFormatStyle
。这个 API 允许开发者在格式化时显式指定两个日期,并以目标日期作为其锚点,从而有效解决了对当前日期的隐式依赖带来的问题。
让非法状态无法表示 (Making Illegal States Unrepresentable)
在状态建模中,理想状态是仅保留系统所需的有效状态,将所有非法状态从模型中剔除。这一方法广泛应用于函数式编程,其核心理念是“让非法状态无法在代码中表示”。
在本文中,Alex Ozun 通过示例代码演示了如何使用 Swift 的类型系统作为首选工具来表示合法状态,从而避免代码进入意外状态的分支。
本文是 Alex Ozun Type-Driven Design with Swift 系列的最新一篇。作者希望通过这个系列,改变读者的 Swift 编程思维方式,引导 Swift 社区更多地关注类型驱动设计的原则。
Swift 并发中的常见问题模式 (Problematic Swift Concurrency Patterns)
在 Swift 严格并发模式中,许多开发者可能会遇到各种复杂问题,有些错误尽管可以根据 Xcode 提示解决,却往往难以彻底理解原因。
在本文中,Matt Massicotte 梳理了 Swift 并发中的一些常见问题,例如隔离域的混用(“Split Isolation”)、不必要的 Task.detached
、过度依赖显式优先级、误用 MainActor.run
、无状态 actor、以及 Non-Sendable
类型的误用等。Massicotte 强调,在处理复杂的并发代码时,开发者应根据实际场景作出判断,而非盲目依赖“最佳实践”。
开源库推荐
HandySwiftUI
Cihat Gündüz 在开发多个 Swift 应用(例如 TranslateKit、FreemiumKit 和 CrossCraft)的过程中,逐渐积累了丰富的实用 API,并将这些工具和便捷 API 整合成一个独立的开源库:HandySwiftUI。正如库名所示,作者希望该库能够为 SwiftUI 开发者提供更多便利,加速开发流程。此外,作者最近还撰写了两篇文章深入介绍 HandySwiftUI 中的核心功能,便于开发者更好地利用这个工具。
ProtobufKit
Kyle Ye 是 OpenSwiftUI 项目的发起人和主要开发者。由于 SwiftUI 内部使用 Protobuf 处理二进制数据,他开发了一个轻量级的 Swift 方案:ProtobufKit,以实现与 SwiftUI 内部协议的兼容,从而更好地解析这些数据。如今,这部分代码已被独立成库,旨在帮助更多开发者简化 Swift 项目中的 Protobuf 序列化操作。