肘子的 Swift 周报 #027 | 苹果助你成为一日“百万富翁”

肘子的话

欢迎访问 weekly.fatbobman.com 订阅本周报的中英文电子邮件版本。你也可以直接访问我的博客 肘子的 Swift 记事本 查看更多的周报内容。

1976 年 4 月 11 日,苹果公司迈出了重要一步,Steve Wozniak 设计的 Apple I 型电脑问世。尽管仅是一块需要用户自行添加键盘和显示器的电路板,但历史意义却极为重大,这款产品奠定了苹果公司的市场地位。

值得一提的是,几天前( 4 月 11 日 )发生的一个趣闻:苹果为开发者提供的 App Store 管理网站出现了 Bug,导致不少开发者在短时间内的销售额显示数据飙升至数百万美元。虽然这一数字很快被修正,但这一小插曲却为开发者社区带来了轻松的笑料,也让部分开发者暂时"尝到"了成为百万富翁的滋味。

除此之外,更受关注的是苹果的研究人员最近发表了一篇名为 Ferret-UI: Grounded Mobile UI Understanding with Multimodal LLMs 的论文。这篇论文介绍了一种新型 AI 语言模型"Ferret-UI",该模型专为提升移动设备用户界面(如 iPhone 和 Android)的交互体验而设计,能在多种输入形式下执行复杂的参考和交互任务。

论文显示,Ferret-UI 在各项基础和高级 UI 任务中表现出色,其性能超越了现有的多模态大规模语言模型和 GPT-4V,再次证明了苹果在用户体验和可访问性领域的领先地位。

随着即将到来的 WWDC,苹果预计将展示更多关于本地 AI 和大型语言模型的创新。本篇论文为我们揭开了一角,展示了苹果在这一领域的实力和未来的发展方向。

前一期内容全部周报列表

原创

@State 魅影:一个多窗口模式下 SwiftUI 应用的 Bug 分析

Fatbobman( 东坡肘子 )

在本篇文章中,我们将探讨一个影响多窗口模式下 SwiftUI 应用的 Bug,并提出有效的临时解决策略。我们不仅会详细描述这一问题的表现,还将分享从发现到诊断,最终解决问题的全过程。通过这一探索,旨在为遇到类似挑战的开发者提供一个指引,以帮助他们更好应对其他的 SwiftUI 开发难题。

近期推荐

SwiftLog 和 OSLog:选择、使用以及坑

王巍 (onevcat)

日志工具对开发者至关重要,它们在调试和维护上线应用中扮演着提供即时且精确信息的角色。本文由王巍撰写,深入探讨了 Swift 开发中的两种日志记录框架:SwiftLog 和 OSLog。SwiftLog 适合于跨平台应用或需要高度定制的日志管理场景;而 OSLog 则专为 Apple 平台的应用开发优化。文章不仅详述了日志的写入、读取和性能处理,还指出了使用 OSLog 时可能遇到的问题和潜在陷阱,为开发者提供了全面的指导和实用建议。

此外,上周,Keith Harrison 也深入探讨了如何检索 OSLog 信息,详见其文章 Fetching OSLog Messages in Swift

Splitting Up a Monolith: From 1 to 25 Swift Packages

Ryan Ashcraft

模块化编程是现代软件开发中的一个关键特性。许多开发者虽然认识到模块化的重要性,但通常由于认为改造现有项目复杂或难以着手而望而却步。在本文中,Ryan Ashcraft 详细介绍了他如何将一个单体架构重构为超过二十五个 Swift 包的过程,包括这一过程中遇到的挑战和必须作出的权衡。重构的结果令 Ryan 非常满意,尽管应用的包大小有所增加,但构建性能和 SwiftUI 预览方面均获得了显著提升。他希望这篇文章能为其他开发者在进行类似重构时提供启示和帮助。

Get Xcode Previews Working

Alexander

Preview 功能是 SwiftUI 的一项核心特性,理想状态下能显著提升开发者的工作效率。然而,由于其独特的构造,许多项目中的 Preview 功能常常出现问题,使得这项本应出色的功能频繁受到开发者的批评。在本文中,Alexander 介绍了如何解决使用 Xcode 预览时常见的问题,并建立一个有效的预览环境。通过分享其在 IronIQ 项目中的亲身经历,作者详细阐述了为支持使用 Swift 包管理器(SPM)和复杂的数据堆栈配置 Xcode 预览环境的步骤和策略。

若要深入了解 Preview 功能的更多细节和技术背景,建议阅读 Behind SwiftUI Previews构建稳定的预览视图 ------ SwiftUI 预览的工作原理

Syncing data with CloudKit in your iOS app using CKSyncEngine and Swift

Jordan Morgan

虽然开发者使用 CloudKit API 从服务器获取数据相对简单,但实时处理本地与云端数据的同步则面临许多挑战,如复杂的网络环境、用户权限限制及设备的电量管理策略等。为了简化开发者的工作,苹果在 2023 年的 WWDC 中推出了 CKSyncEngine 框架,并已在其应用如 Freeform 和 NSUbiquitousKeyValueStore 中采用。Jordan Morgan 在本文中详细介绍了使用 CKSyncEngine 来简化数据同步的步骤和技术,使得开发者可以更容易地实现复杂应用的数据同步。这篇文章是为那些希望提高应用用户体验并实现流畅数据同步的 iOS 开发者提供的宝贵资源。

Embracing Imaginary Spatial User Experience in visionOS

Francesco Perchiazzi

随着 Apple Vision Pro 的推出,空间计算设备(Spatial Computer)为用户交互和体验开辟了新的维度。Francesco Perchiazzi 在这篇文章中提供了一系列设计指导原则和框架,旨在帮助设计师和开发者为 VisionOS 创建更具吸引力和互动性的应用。文章详细探讨了用户体验的基本原则,如何利用空间计算中的心理学原理,以及空间设计在创意解决问题中的应用历史。此外,Perchiazzi 也提供了一些具体的设计空间对象的指南,强调了结合心理学原理和用户研究的重要性,这不仅能满足功能需求,还能激发用户的情感反应。通过这些方法,开发者可以创造出真正引人入胜的多感官体验,为用户带来前所未有的交互方式。

HandVector

苹果 API 搬运工( Xander )

虽然 Apple Vision Pro 已在美国市场上销售一段时间,但针对其开发的应用数量仍较少。这在很大程度上是由于全球各地的开发者在没有实体设备的情况下,难以在模拟器中对手势操作进行测试。为此,Xander 创建了 HandVector 这一库,它提供了一种在 visionOS 模拟器上测试手部跟踪的有效方法。此库包括一个 macOS 辅助应用程序和一个 Swift 类,这个类通过 Bonjour 服务进行连接,并将 JSON 数据转换为手势数据。通过使用 HandVector,开发者可以在还未获取实体设备的情况下,对其应用进行全面测试,从而加速应用开发和上市进程。

往期内容

THANK YOU

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

欢迎访问 weekly.fatbobman.com 订阅本周报的中英文电子邮件版本。

相关推荐
良技漫谈2 天前
Rust移动开发:Rust在iOS端集成使用介绍
后端·程序人生·ios·rust·objective-c·swift
KeithTsui3 天前
ZFC in LEAN 之 前集的等价关系(Equivalence on Pre-set)详解
开发语言·其他·算法·binder·swift
袁代码3 天前
Swift 开发教程系列 - 第4章:函数与闭包
ios·swift·ios开发
今天也想MK代码3 天前
在Swift开发中简化应用程序发布与权限管理的解决方案——SparkleEasy
前端·javascript·chrome·macos·electron·swiftui
安泽13144 天前
高德地图美食
开发语言·swift·美食
袁代码4 天前
Swift 开发教程系列 - 第2章:Swift 基础语法
swift·ios开发·基础教程
袁代码4 天前
Swift 开发教程系列 - 第1章:Swift 简介与开发环境配置
swift·ios开发·基础教程
孚亭4 天前
一些swift问题
swift
莫问alicia5 天前
echarts 实现3D饼状图 加 label标签显示
前端·3d·echarts·swift
uiop_uiop_uiop7 天前
iOS Swift5算法恢复——HMAC
ios·iphone·swift