前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >肘子的 Swift 周报 #019 | 超越代码,拥抱思维转变

肘子的 Swift 周报 #019 | 超越代码,拥抱思维转变

作者头像
东坡肘子
发布2024-02-26 16:21:23
780
发布2024-02-26 16:21:23
举报

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

肘子的话

经过几个月对 SwiftData 的研究,我最近才在项目中正式采用了它。然而,我发现与使用 Core Data 相比,编写代码的效率有所下降。这并非因为 SwiftData 难以使用,实际上,尽管 SwiftData 是在 Core Data 的基础上发展而来,但要想正确地使用和深入理解它,我必须放弃许多我以前掌握的 Core Data 经验,尝试采用与 SwiftData 设计哲学更为契合的编程逻辑,这个过程中我不得不几次重新开始。

我注意到,许多开发者在从 Core Data 转换到 SwiftData 的过程中,往往只花费了几天甚至更短的时间。这种做法容易导致一个问题:仅仅将 SwiftData 当作 Swift 语言化的 Core Data,并简单地将 Core Data 的代码转化为 SwiftData 的代码。这种情况不仅仅发生在 SwiftData 的应用中,在使用 Observation 框架时,也有开发者仅仅是将基于 ObservableObject 的代码转换为新的模式。这种做法严重削弱了框架转换带来的结构和思维转变的机会,这是一个巨大的遗憾。

SwiftUI 自发布以来已五年,尽管发展速度并不算快,但苹果公司已经逐步向开发者们提供了一套更为全面的现代化编程框架。当前,开发者所面临的主要挑战,是缺乏对这套框架的深入理解和实践经验。在进行框架转换的过程中,开发者不应仅仅局限于代码层面的直接转换,更为关键的是要进行思维和理念上的转变,这样才能真正发掘并利用新框架的全部潜力。

前一期内容全部周报列表

原创

探讨 SwiftUI 中的属性包装器:@UIApplicationDelegateAdaptor、@AccessibilityFocusState、@FocusedObject、@FocusedValue 和 @FocusedBinding[2]

Fatbobman( 东坡肘子 )[3]

在本文中,我们将对 @UIApplicationDelegateAdaptor@AccessibilityFocusState@FocusedObject@FocusedValue@FocusedBinding 等属性包装器进行探讨。这些属性包装器涵盖了不同框架声明周期的整合、辅助聚焦、焦点值观察管理等功能。

Swift 语言的属性包装器与 SwiftUI 诞生于同一年。SwiftUI 充分利用这一功能,为开发者提供了一系列属性包装器,极大地简化了开发过程。在这个系列[4]的四篇文章中,我们详细梳理了截至 iOS 17 时期 SwiftUI 所提供的全部属性包装器,旨在帮助开发者更加高效和便捷地使用 SwiftUI。希望这些内容能对大家在使用 SwiftUI 时提供有价值的指导和帮助。

近期推荐

The Swift Method Dispatch Deep Dive[5]

Jacob Bartlett[6]

本文深入探讨了 Swift 语言中的方法派发机制,目的在于阐释 Swift 执行函数调用的机制及其对代码性能的具体影响。作者 Jacob Bartlett 采用了既详细又易于理解的方式,解析了方法派发的基本概念和各类方法派发(包括静态派发、表派发和消息派发)如何影响代码的性能表现。文章进一步讨论了通过采纳某些策略,如使用 final 关键字、方法的私有化以及全模块优化等,来降低动态派发的频率,从而有效提升 Swift 代码的运行效率。

Discovering Swift Algorithms package[7]

Majid Jabrayilov[8]

由苹果公司官方维护的 Swift Algorithms[9] 是一个开源库,旨在为 Swift 语言带来一系列高效、强大及实用的算法扩展。该库通过丰富 Swift 标准库的算法集合,为开发者在数据处理和计算执行上提供了极大的便利。在这篇文章中,Majid Jabrayilov 利用自己丰富的实践经验,向我们展示了如何借助 Swift Algorithms 库中提供的各种功能,如二分搜索、数据分块、过滤、采样和元素组合等,有效提升项目开发的效率和执行性能。

Encapsulate and Generalize in Swift[10]

Scott Smith[11]

在项目中频繁引入第三方库,导致开发者不得不在代码中大量使用 import 语句。Scott Smith 在他的文章中提出了一种策略,以减轻 Swift 项目对第三方依赖的负担:确保整个项目仅单次导入每个第三方库,并避免在变量、类名或任何其他标识符中直接使用依赖库的名称。他强调,通过封装和泛化对第三方库的引用,可以避免代码与特定库过于紧密的绑定,这种紧密绑定会在更换库或调整功能时引入不必要的复杂性和额外工作。

The SwiftUI Field Guide[12]

Chris Eidhof[13]

SwiftUI 提供了一套既丰富又强大的布局工具集,然而,对于初学者来说,仅通过阅读文档往往难以迅速理解各种布局容器及其参数的具体功能和应用效果。针对这一挑战,Chris Eidhof 推出了 ”The SwiftUI Field Guide“ 网站。该网站采用交互式演示的形式详细解释了 SwiftUI 布局系统的运作机理,旨在帮助开发者直观地掌握布局工具的使用。

需要注意的是,网站上展示的 SwiftUI 布局效果是基于 Web 技术实现的,因此其行为可能与 SwiftUI 的实际表现存在细微差别。尽管如此,这些差异并不妨碍开发者对布局容器基础功能的理解和学习。

A week on with a VisionPro[14]

Joseph Heck[15]

在本文中,Joseph Heck 记录了他初次使用 Apple Vision Pro 的体验和所思所感,目的是为了日后回顾这款产品经过数次迭代更新后的变化。虽然在使用过程中遇到了一些挑战和不足,但 Heck 对于 Apple Vision Pro 展现出的开发和应用潜力持积极态度,尤其是在信息可视化和软件调试这些领域。他对未来利用 Apple Vision Pro 进行创新和探索充满了期待,展现了一位开发者对新技术探索无限可能的热情。

THANK YOU

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

参考资料

[1]

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

[2]

探讨 SwiftUI 中的属性包装器:@UIApplicationDelegateAdaptor、@AccessibilityFocusState、@FocusedObject、@FocusedValue 和 @FocusedBinding: https://fatbobman.com/zh/posts/exploring-swiftui-property-wrappers-4/

[3]

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

[4]

系列: https://fatbobman.com/zh/collections/data-flow/#属性包装器概述

[5]

The Swift Method Dispatch Deep Dive: https://t.ly/qMngU

[6]

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

[7]

Discovering Swift Algorithms package: https://t.ly/-Hu3F

[8]

Majid Jabrayilov: https://twitter.com/mecid

[9]

Swift Algorithms: https://github.com/apple/swift-algorithms

[10]

Encapsulate and Generalize in Swift: https://t.ly/b5z_r

[11]

Scott Smith: https://twitter.com/scottsmithdev

[12]

The SwiftUI Field Guide: https://t.ly/6cWsC

[13]

Chris Eidhof: https://twitter.com/chriseidhof

[14]

A week on with a VisionPro: https://t.ly/42UL5

[15]

Joseph Heck: https://mastodon.social/@heckj

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 肘子的话
    • 原创
    • 探讨 SwiftUI 中的属性包装器:@UIApplicationDelegateAdaptor、@AccessibilityFocusState、@FocusedObject、@FocusedValue 和 @FocusedBinding[2]
      • 近期推荐
      • The Swift Method Dispatch Deep Dive[5]
      • Discovering Swift Algorithms package[7]
      • Encapsulate and Generalize in Swift[10]
      • The SwiftUI Field Guide[12]
      • A week on with a VisionPro[14]
      • THANK YOU
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com