肘子的话
尽管世界局势并不平静,2024 对我而言却是一个充实美好的年份。这一年里,我写下了 47 篇文章,发布了 51 期周报,也能感受到自己对 Swift、SwiftUI 的理解在不断深入。而最令我欣慰的,是全家人都健康平安。
祝愿大家在 2025 年都能拥有健康的身体、愉悦的心情。也期待 Swift、SwiftUI 在新的一年里继续蓬勃发展。
2025 新年快乐!🎉
原创
为何 Swift 6 中某些视图修饰器无法使用 @State 属性
在 Xcode 16 中,为了改善 SwiftUI 在 Swift 6 模式下的表现,苹果对 SwiftUI 框架的 API 进行了多项调整,以满足更严格的并发检查要求。其中最显著的变化是将 View
协议全面标注为 @MainActor
。这些优化虽然总体上改善了开发者在 Swift 6 模式下的编程体验,但也在某些特定场景中引发了一些看似反常的编译错误。本文将详细探讨为什么某些视图修饰器中无法直接使用 @State
属性值,并提供相应的解决方案。
本文是我在 2024 年发表的最后一篇文章。接下来,我将休息一段时间,计划于春节过后( 2025 年 2 月中旬)恢复发布新文章。在此期间,周报仍将正常发布。
近期推荐
探索 SwiftUI 中 TabView 的进展 (Exploring TabView Advancements in SwiftUI)
在 WWDC 2024 上,TabView
迎来了重大升级,不仅简化了开发流程,更为 iPadOS 和 macOS 平台带来了前所未有的灵活性与表现力。此次更新带来了多项引人瞩目的新特性,包括更为简洁的标签页创建方式、增强的程序化导航能力,以及专为 iPadOS 优化的 sidebarAdaptable
样式等。为深入理解这些革新性的变化,Gabriel Theodoropoulos 撰写了两篇深度解析文章,全面展示了 TabView
的演进与提升。
在非富文本环境中解析与展示 Genmoji (Reading and Displaying Genmoji in Non-Rich Text Formatted Data Context)
Genmoji 作为苹果公司在 WWDC 2024 重磅推出的创新功能,巧妙地融合了”生成式”(Generative)和”表情符号”(Emoji)技术,让用户能够轻松创建独具特色的个性化表情。该功能基于 NSAdaptiveImageGlyph
实现,天然适配富文本环境。在本文中,Antonella Giugliano 介绍了如何利用 SwiftUI 来渲染从 NSAdaptiveImageGlyph
中提取的信息,从而在非富文本环境下展示 Genmoji。这一方法为开发者提供了一种灵活的解决方案,用于处理和展示图文混合内容。
在 Metal 和 SwiftUI 中创建溶解效果 (Crafting a Dissolve Effect in Metal and SwiftUI)
Metal 的着色器系统为开发者提供了创建高性能、视觉炫丽特效的强大工具。在这篇文章中,Uladzislau Volchyk 探讨了如何利用 Metal 实现溶解特效,并重点讲解了 Metal 渲染管线的基础知识。作者通过多张图表详细解释了工作原理,同时提供了完整的实现代码,涵盖了渲染器的配置、顶点与片段着色器的编写,以及启用混合功能的渲染管线构建等关键环节。
像苹果一样写 Swift (Write Swift Like Apple)
Swift 编程语言有许多不同的代码规范。在多年的开发经验中,Uwais Alqadri 发现,混合使用 UIKit 和 SwiftUI 的项目时,最好的做法是遵循苹果自己在 Swift 编程中的编码风格。通过两篇文章,他总结了苹果在 Swift 编程中的一些习惯用法,通过合理命名、简洁的类型推断和清晰的协议设计,让代码既保持优雅简洁,又能自然融入苹果的框架设计理念。
MyTallies Widgets, AppIntents, Siri Shortcuts and WatchKit
在这个系列教程中,Stewart Lynch 以一款基于 SwiftUI 和 SwiftData 开发的计数器应用 MyTallies 为基础,全面展示了如何在苹果生态系统中构建多平台功能。教程深入浅出地讲解了小组件(Widgets)的开发、AppIntents 的应用、Siri 快捷指令的集成,以及 WatchKit 手表应用的构建等核心技术。
Swift 官方编程指南 6.0(中文版)
SwiftGG 翻译小组 已经完成了 Swift 6.0 版本官方文档的翻译工作。欢迎大家订阅他们的微信公众号《SwiftGG 技术小组》,该公众号将定期发布与 Swift 相关的技术内容。