肘子的话
欢迎各位读者进入崭新的 2024 年!首先,衷心祝愿每位读者新年快乐,愿这一年对您来说充满幸福和成功。
回顾 2023 年,我对自己的创作成就进行了简要总结。在这一年里,我共撰写了 34 篇博文,涵盖了多样化的主题。
在我 2023 年所发布的文章中,吸引英文读者最多的五篇博文包括( 根据 Medium 的统计):
深度解读 Observation —— SwiftUI 性能提升的新途径 深入了解 SwiftUI 5 中 ScrollView 的新功能 GeometryReader :好东西还是坏东西? WWDC 23 ,SwiftUI 5 和 SwiftData 的初印象 掌握 ViewThatFits
对于中文读者而言,最受欢迎的五篇文章则是( 博客 + 掘金 + 知乎 + 微信 ):
用 SwiftUI 的方式进行布局 MacBook Pro 使用体验 自定义 Button 的外观和交互行为 一段因 State 注入机制所产生的“灵异代码” WWDC 23 ,SwiftUI 5 和 SwiftData 的初印象
而我在 2023 年投入最多精力的五篇作品则是:
SwiftData 中的并发编程( 共三篇 ) 掌握 TipKit( 共两篇 ) 掌握 Transaction,实现 SwiftUI 动画的精准控制 GeometryReader :好东西还是坏东西? iCloud Documents( 共两篇 )
从 2024 年开始,我所有的文章(包括中英文版本)将只在我的博客上发布。希望在新的一年里,我能够创作出更多优质内容,不仅分享知识,同时也在这个过程中不断提升自己。再次感谢各位读者的支持,期待我们在未来的日子里继续同行!
原创
博客更新记:用新博客迎接 2024
一个多月前,我启动了一个大胆的计划:在人工智能的协助下,彻底重塑我的博客站点。终于,即将度过 2023 年之际,这个全新的博客版本终于面世。这篇文章将简要回顾这次博客更新的旅程,记录下其中的关键步骤和个人感悟。
近期推荐
Swift C++ Interop
Swift 5.9 引入了 Swift 与 C++ 之间的双向互操作性支持。这一进展通过生成 C++ 头文件,允许以类似 C++ 接口的形式暴露 Swift API,极大地简化了将 Swift 集成到现有 C++ 代码中的过程。这也是 Swift 团队近年来的重点开发方向。在这篇文章中,zonble 分享了他在实际工作中尝试融合 Swift 和 C++ 的经验和感悟。他指出,虽然 Swift C++ 互操作性在一定程度上是可行的,但目前还不够成熟,无法完全应用于实际工作中。在 Swift 完全支持 C++ 之前,可能还需要通过 Objective-C 作为中间层。
AsyncPhoto for displaying large photos in SwiftUI
虽然自 iOS 15 起 SwiftUI 已提供 AsyncImage 视图,但其功能和灵活性的局限性仍驱使开发者寻求额外的第三方解决方案以更好地获取和展示图像。针对这一挑战,Toomas Vahter 在其文章中( 共两篇)介绍了他为 SwiftUI 定制的 AsyncPhoto 视图。这一解决方案专为展示大型照片而设计,提供了更广泛的灵活性,支持从多样化的数据源加载图像,同时允许进行自定义的图像处理和展示。AsyncPhoto 的推出,为 SwiftUI 中的图像展示提供了一个高效、灵活的新选项。
苹果 iOS 分发和安装 App 的那些趣事
iHTCboy (37 手游移动客户端团队)
这篇文章主要介绍了苹果 iOS 应用的分发和安装过程中的一些有趣的事情和历史演变。iHTCboy 从苹果最初推出 iPhoneOS 时期不支持原生应用开发,到后来推出 App Store 应用商店的转变,详细讲述了苹果如何发展其应用分发生态系统。文章探讨了不同的开发者计划和分发方式,如企业签名、超级签名、TestFlight 签名和 MDM 超级签名,以及开发者模式、企业账号、设备注册限制等方面。此外,文章还涉及了自定 App 和非公开 App 分发的解决方案,并讨论了欧盟的《数字市场法》可能对苹果软件生态造成的影响。文章为读者提供了关于苹果 iOS 应用分发和安装过程的全面而深入的了解。
Comparing Swift Compiler Performance on Type Inference Part I
在这篇文章中,Lucas van Dongen 深入探讨了 Swift 编译器在类型推断方面的性能,尤其聚焦于不同初始化方法对编译速度的影响。文章起始于作者在工作中遭遇的一个挑战:他负责维护的应用程序中某个代码块编译时间超出了 1000 毫秒的限制,导致持续集成(CI)失败。他发现,问题源于代码中 .init()
的使用,这显著拖慢了编译速度。文章详尽地分析了在 Swift 中不同类型(如字符串、数字、数组、字典)的初始化方式对编译器性能的具体影响。此外,作者还分享了一系列基准测试,展示了不同版本 Swift 编译器性能的比较。
Swift Runtime 符号在动态链接库丢失的排查之路
DanceCC 是字节 ( ByteDance) Mobile Infra 的一套编译工具链的品牌名,基于 Swift. org 的工具链进行了相关定制,包括调试优化,定制 Clang 插件特性,自研 Pass 做包大小和性能优化等等。
本文以一个具体的技术难题为起点:在采用 DanceCC 最新工具链后,某应用程序在启动时遭遇崩溃。作者 DreamPiggy 通过深入的技术分析,准确地锁定了问题的核心——Swift Runtime 的关键符号在动态链接库中的丢失。文章详细地记录了作者在问题排查过程中的各个步骤,特别是对编译器生成的符号的可见性属性进行了细致的审查。在深入剖析问题之后,DreamPiggy 提出了一个临时的解决方案,并进一步分享了对问题的深层次修正方法,包括对源代码的修改以确保符号的正确可见性。