肘子的 Swift 周报 #014 | 发展要建立在稳定的基础上

2024-01-11 14:48:05 浏览数 (2)

肘子的话

最近, 苹果发布的 iOS 17.3 Beta 2 版本出现了令人意外的问题, 使包括 iPhone 15 Pro Max 在内的多款设备出现了循环重启的情况。目前,似乎唯一的解决办法是下载 IPSW 固件进行刷机。虽然 Beta 版本主要面向开发者,但出现这种严重的问题仍然让人意外。

我原本以为苹果会花更多时间来打磨其全新产品 Apple Vision Pro,但根据最新消息,该产品将于 2 月 2 日上市。考虑到当前苹果在软件质量控制方面的表现, 我不免对该产品的稳定性和成熟度存有些许疑虑。

几周前,苹果让其部分软件开发团队用一周的时间来专注修复现有的一些问题,但效果似乎并不明显。在撰写关于 Core Data 关系处理的文章时,我发现了 SwiftData 在操作对多关系方面的一个令人疑惑的设计( 处理不当会产生严重的性能问题 )。本周推荐的另一篇文章也指出了 SwiftData 在处理挂起更改时的问题。总的来说,新错误不断增加,旧问题仍没有得到改善。

我真心希望这些问题不要继续积累演变为对用户和开发者造成严重影响的程度。

当然,本周也有一些令人振奋的消息。据说 Siri 在使用生成式 AI 方面取得了显著进展,预计在今年的 WWDC 上将有惊喜亮相。我也希望在 2024 年中,苹果能在开发工具与 AI 结合方面做出更多创新,为使用 Xcode 的开发者们带来更加丰富和高效的 AI 辅助开发体验。

我将继续关注苹果在解决现有问题和推动技术创新方面的努力,期待它们带来的积极变化。

前一期内容全部周报列表

原创

掌握 Core Data 中的关系:基础[2]

Fatbobman(东坡肘子)[3]

在众多关于 Core Data 的讨论中,“对象图管理”无疑是一个频繁出现的核心概念。作为一个颇具盛名的对象图管理框架,Core Data 如何精确描述并有效管理不同数据实例之间的复杂关系,成为了它的关键任务。事实上,管理关系的能力不仅构成了 Core Data 的核心特征,也是其相较于其他数据持久化框架的一大显著优势。在本文中,我们将深入探讨 Core Data 中关系的基本概念,同时提供关于实现这些关系的重要指导和建议。

近期推荐

SwiftData Fetching Pending Changes[4]

Keith Harrison[5]

在 Core Data 中,当我们从持久化存储中提取数据时,托管对象上下文默认会包含那些挂起的更改(即未被持久化的更改)。SwiftData,作为 Core Data 的后继技术,理应具有类似的特性。然而,在相似的配置环境下,SwiftData 并未能像 Core Data 那样有效地处理这些更改。在本文中,Keith Harrison 深入探讨了这一问题,向正在使用 SwiftData 的开发者发出了警示。

AnyView’s impact on SwiftUI performance[6]

Martin Mitrevski[7]

本文探讨了在 SwiftUI 中使用 AnyView 对性能可能造成的影响。AnyView 作为一种类型擦除视图,使得开发者无需明确指定视图层次结构中各个视图的具体类型,从而简化了代码的复杂度,避免了泛型的频繁使用。然而,这种方便性可能以牺牲性能为代价。作者 Martin Mitrevski 通过精心设计的测试代码,直观地展示了 AnyView 在 SwiftUI 中所造成的性能影响。文章特别指出,在包含大量子视图的滚动列表等场景中,应谨慎使用 AnyView,以避免不必要的性能下降。

How to use Stable Diffusion models in a Swift app[8]

Pol Piella[9]

随着苹果硅芯片技术的兴起,越来越多开发者开始在移动设备上探索开源 AI 模型,以实现创新的 AI 应用。在这篇文章中,Pol Piella 详细介绍了如何在 Swift 应用程序中有效地利用稳定扩散(Stable Diffusion)模型。他不仅阐述了如何在 Swift 应用中运用现有的 CoreML 模型,还展示了使用苹果公司的 ml-stable-diffusion 库的具体步骤。此外,文章还讲解了如何借助苹果公司的 python_coreml_stable_diffusion.torch2coreml 脚本,将 HuggingFace 平台上的任何模型转换为 CoreML 模型,从而拓宽了在 Swift 应用中实现 AI 功能的可能性。

Workaround: Xcode simctl status_bar is still broken for iOS 17 simulators[10]

jesse squires[11]

simctl status_bar 作为一个重要的命令行工具,它在 iOS 模拟器中扮演着自定义状态栏信息的关键角色。该工具能够调整屏幕顶部状态栏显示的各种信息,如时间、电池电量和网络信号等。开发者在准备应用商店的截图或者进行其他专业演示时,经常依赖这一工具来确保状态栏信息的一致性和专业外观。不幸的是,在 iOS 17 模拟器上,simctl status_bar 的功能遭遇了障碍,传统的方法无法再被应用。在这篇文章中,jesse squires 分享了他为解决这一问题所找到的临时方案。鉴于目前的情况,作者预测这个问题短期内可能不会得到解决。

Git basics for iOS developers[12]

Donny Wals[13]

本文由 Donny Wals 撰写,旨在为 iOS 开发者提供 Git 的基本知识和概览。Wals 强调,尽管没有专门为 iOS 开发者定制的 Git 版本,但对于从事 iOS 开发的人来说,了解并掌握 Git 是极其重要的。文章的主要目的是介绍 Git 的核心概念、命令和基本原则,帮助 iOS 开发者更有效和高效地在他们的工作中应用 Git。通过这篇文章,Wals 为那些希望深入了解如何在 iOS 开发环境中运用 Git 的开发者提供了一个实用且内容丰富的起点。

THANK YOU

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

参考资料

[1]

fatbobman.substack.com: https://fatbobman.substack.com

[2]

掌握 Core Data 中的关系:基础: https://fatbobman.com/zh/posts/mastering-relationships-in-core-data-fundamentals/

[3]

Fatbobman(东坡肘子): https://twitter.com/fatbobman

[4]

SwiftData Fetching Pending Changes: https://t.ly/de37z

[5]

Keith Harrison: https://twitter.com/kharrison

[6]

AnyView’s impact on SwiftUI performance: https://t.ly/vGE0P

[7]

Martin Mitrevski: https://twitter.com/mitrevski

[8]

How to use Stable Diffusion models in a Swift app: https://t.ly/EDXwf

[9]

Pol Piella: https://twitter.com/polpielladev

[10]

Workaround: Xcode simctl status_bar is still broken for iOS 17 simulators: https://t.ly/AzTu6

[11]

jesse squires: https://twitter.com/jesse_squires

[12]

Git basics for iOS developers: https://t.ly/fzO4-

[13]

Donny Wals: https://twitter.com/donnywals

0 人点赞