前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >肘子的 Swift 周报 #022 | 忙碌的一周

肘子的 Swift 周报 #022 | 忙碌的一周

作者头像
东坡肘子
发布2024-03-18 12:29:23
830
发布2024-03-18 12:29:23
举报

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

肘子的话

上周对苹果公司而言是相当忙碌的一周。他们发布了搭载 M3 芯片的 MacBook Air、推出 iOS 17.4 版本让欧盟用户可以接入第三方应用商店,并且在官网上对 Spotify 和欧盟表达了不满,同时还暂停了 Epic 的开发者账户(据悉将很快恢复)。此外,苹果还发布了 Xcode 15.3 版本,并随之带来了 Swift 5.10 的更新。

在这众多更新中,对开发者而言最重大的莫过于 Swift 5.10 的发布。并发模型最早在 Swift 5.5 版本中引入,包括了 async/awaitactor 和结构化并发等特性。随后的 Swift 5.7 版本引入了 Sendable,作为确保类型在并发环境中线程安全的基础概念。而今,Swift 5.10 在启用完整并发检查选项后,将强制在语言的所有方面实施完全的数据隔离,以编译时检查为手段确保安全。

我在使用 Swift 5.10 重新编译现有项目代码时,主要遇到的问题源于新引入的 strict concurrency for global variables[2] 机制,尤其是对类型属性的警告。现在开发者们应该尽早启用严格的并发检查,为接下来的 Swift 版本做好准备。

可能很快,社交媒体上就会充斥着关于 Xcode 中各种错误和警告的截图。希望大家能以平和的心态面对这个或许“痛苦”的转变过程,毕竟这是向前迈进、提升代码质量和应用稳定性的必经之路。

前一期内容全部周报列表

原创

如何为 SwiftData 动态的构建复杂的谓词[3]

Fatbobman( 东坡肘子 )[4]

NSCompoundPredicate 让开发者能够将多个 NSPredicate 对象组合成一个复合谓词。这一机制特别适用于那些需要基于多重判断标准进行数据过滤的场景。然而,在 Swift 重构的新 Foundation 框架中,缺失了与 NSCompoundPredicate 相对应的直接功能,这一变化对希望利用 SwiftData 构建应用的开发者造成了不小的挑战。本文旨在探索如何在当前的技术条件下,利用 PredicateExpression,动态地构建出符合 SwiftData 需求的复杂谓词。

在过去的三周里,我通过三篇文章探讨了 Swift Predicate 的原理和结构[5],以及如何 在 SwiftData 中处理 Predicate 可选值[6] 的相关注意事项。通过一段时间的实践,Swift Predicate 对我产生了深远的影响。它不仅在特定框架中发挥作用,我预见在未来的开发过程中,Swift Predicate 将在更多数据逻辑判断的场景中广泛应用。

近期推荐

SwiftUI-First Architecture[7]

Mike Apurin[8]

自 SwiftUI 问世以来,寻找最合适的架构便成为了广受关注的议题。Mike Apurin 在尝试传统框架模式后发现这些方法未能满足他的需求,因此他倡导了一种 “SwiftUI-first” 的架构理念。这一理念主张充分利用 SwiftUI 所提供的工具与特性,例如 @State@Environment,而不是将其硬套在传统的架构模式上。他所推崇的 SwiftUI-first 架构,强调了灵活性与可扩展性,鼓励开发者充分利用 SwiftUI 的最新功能,并根据各自项目的需求灵活调整架构,以达到最佳的应用表现。

High Performance Swift Apps[9]

Jacob Bartlett[10]

开发应用只是第一步;关键在于确保其运行安全且高效。Jacob Bartlett 在本文中透彻阐述了他对新应用的性能优化的完整流程。借助具体的代码改善、Instruments 工具分析以及性能对比数据,文章全方位展示了各项优化措施如何显著提升应用性能。这些优化最终确保了应用能高效生成 2FA 代码,并最大化地利用了设备的多核 CPU,以此提供更快的处理速度和优化的用户体验。虽然介绍特定优化技巧的文章不在少数,但像本文这样对整个应用优化过程进行深入分析的内容却相对罕见,对开发者而言具有极高的参考价值。

Pitfalls and solutions when building Metal Shaders for Core Image Kernel[11]

JuniperPhoton[12]

作为专业拍照软件 PhotoCam 的开发者,JuniperPhoton 对图像处理的效率和质量持有严格的标准。他在本文中深入分析了使用 Core Image 框架搭配 Metal 着色器进行图像处理时所面临的挑战及其相应的解决策略。文章不只是提供了实际的技术详情,还揭示了如何规避一些常见的问题,对于那些希望深入理解 Core Image 与 Metal 联合应用的开发者来说,这无疑是极具价值的参考资料。

Swift 5.10[13]

Michael Tsai[14]

近日,随着 Xcode 15.3 的发布,Swift 5.10 正式面世。该版本在并发语言模型中引入了完全数据隔离机制,为即将发布的 Swift 6 版本奠定了坚实基础。Michael Tsai 收集了来自不同专家对 Swift 5.10 新特性的点评和综述,涉及了核心功能的总结及其对未来的潜在影响。

正如 第20期周报[15] 所讨论,开发者们应尽早为 Swift 6 做准备。虽然我在之前已经启用了完整的并发检查,但升级到 Xcode 15.3 后,现有项目代码还是遇到了一些新问题。解决这些问题越早,将来面临的挑战就越小。

Migrating my SwiftUI App to VisionOS in 2 Hours[16]

Cihat Gündüz[17]

在这篇文章里,Cihat Gündüz 详细讲述了他如何在两小时内,将他的 SwiftUI 应用 CrossCraft 成功迁移到 visionOS 上。虽然将迁移时间压缩到两小时可能听起来有些夸张,但 Cihat 通过直播整个过程并分享视频,实实在在地展示了这一成就。这一经历向我们展示,若你的应用已经在 iPadOS 和 macOS 上运行良好,那么将其适配到 visionOS 相对来说会简单许多。本文不仅记录了详细的迁移步骤,还为想要迅速将自己的应用转移到 visionOS 的开发者们提供了宝贵的建议和指南。

THANK YOU

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

参考资料

[1]

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

[2]

strict concurrency for global variables: https://github.com/apple/swift-evolution/blob/main/proposals/0412-strict-concurrency-for-global-variables.md

[3]

如何为 SwiftData 动态的构建复杂的谓词: https://fatbobman.com/zh/posts/how-to-dynamically-construct-complex-predicates-for-swiftdata/

[4]

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

[5]

Swift Predicate 的原理和结构: https://fatbobman.com/zh/posts/swift-predicate-usage-composition-and-considerations/

[6]

在 SwiftData 中处理 Predicate 可选值: https://fatbobman.com/zh/posts/how-to-handle-optional-values-in-swiftdata-predicates/

[7]

SwiftUI-First Architecture: https://t.ly/oVirW

[8]

Mike Apurin: https://twitter.com/auramagi

[9]

High Performance Swift Apps: https://t.ly/uVS3c

[10]

Jacob Bartlett: https://twitter.com/jacobs_handle

[11]

Pitfalls and solutions when building Metal Shaders for Core Image Kernel: https://t.ly/0gwLs

[12]

JuniperPhoton: https://twitter.com/JuniperPhoton

[13]

Swift 5.10: https://t.ly/Ok1tR

[14]

Michael Tsai: https://twitter.com/mjtsai

[15]

第20期周报: https://fatbobman.substack.com/p/fatbobmans-swift-weekly-020

[16]

Migrating my SwiftUI App to VisionOS in 2 Hours: https://t.ly/9FEk-

[17]

Cihat Gündüz: https://twitter.com/Jeehut

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-11,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 肘子的Swift记事本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 肘子的话
    • 原创
    • 如何为 SwiftData 动态的构建复杂的谓词[3]
      • 近期推荐
      • SwiftUI-First Architecture[7]
      • High Performance Swift Apps[9]
      • Pitfalls and solutions when building Metal Shaders for Core Image Kernel[11]
      • Swift 5.10[13]
      • Migrating my SwiftUI App to VisionOS in 2 Hours[16]
      • THANK YOU
      相关产品与服务
      云直播
      云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com