Skip to content

Releases: SwiftOldDriver/iOS-Weekly

老司机 iOS 周报 #274 | 2024-01-08

08 Jan 02:28
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新手推荐

🐎 The Art of the Corner Radius

@Barney:本篇文章简单介绍了 swiftUI 中 Corner Radius 的基础使用,浅显易懂,图文并茂,只需 3 分钟就可以领略“圆角”的艺术。

文章

🌟 🐢 微信业务开发方法与实践

@xuyafei86:在当前竞争激烈的商业环境中,深刻理解业务流程对于开发复杂软件系统至关重要。微信团队万字长文带你拔开迷雾,直达本质,深入理解业务是什么,以及如何挖掘业务价值。

本文详细阐释了业务建模的核心概念和方法,并通过支付业务的具体案例进行演示。你将从文中学到如何理解构建的业务系统背后所服务的目标组织,深入其业务流程,找出改进机会。感兴趣的同学可以阅读原文了解。

尾调用以及如何规避

@老峰:尾调用(Tail Call)是函数式编程的一个重要概念,本文介绍它的基本概念以及通过使用 OS_NOT_TAIL_CALLED 规避尾调用的代码优化方式。

浏览器内核创新技术演进及实践 - U4 5.0

@莲叔:U4 是 UC 基于 Chromium 内核二次开发的浏览器引擎,在阿里内部被广泛的使用。本篇文章介绍了在介绍 U4 的 5.0 新版本特性的同时,也科普了很多浏览器内核相关的技术,比如性能提升的关键模块:渲染引擎与 JS 引擎。移动端目前越来越多的业务通过 H5 来实现,作为客户端的同学多了解一些浏览器引擎的技术对于协助前端做出更优化的体验是很有帮助的。推荐阅读。

哥伦布即时设计平台 ChatGPT 落地实践

@水水:本文介绍了 ChatGPT 在哥伦布即时设计平台应用以及实现原理,通过设计 ChatGPT 交互 DSL、Prompt 与 Function 实现 Ai 智能交互、提高平台搭建效率。即让 AI 通过 DSL 了解即时设计能力,同时输出 DSL 解析执行,设计平台具备以下能力:
1.画布编辑能力:提供了丰富的画布编辑功能,包括添加、删除、复制、调整层级等操作,可以灵活地编辑页面的结构和布局。
2.样式配置能力:支持对页面元素的样式进行配置,包括字体、颜色、大小、边框等,可以根据需求进行自定义的样式设置。
3.数据接口配置能力:支持与数据接口的绑定,可以通过配置数据接口来实现页面内容的动态展示,提高页面的灵活性和可扩展性。
4.交互事件配置能力:支持对页面元素的交互事件进行配置,包括点击、滑动、弹窗等,可以实现页面的交互效果,提升用户体验。
5.预览和下载能力:提供了在线预览和下载代码的功能,可以实时查看页面效果,并将设计的页面代码下载到本地进行进一步开发和调试。

工具

Unxippity

@Smallfly:这是一款 unxip 的可视化开源工具,用于加速下载和解压 Xcode。

代码

swift-retry

@AidenRao:该项目是一个 Swift 语言的重试库,旨在提供合理的默认设置和强大的灵活性。

  • 合理的默认设置:默认选择指数退避算法,适用于大部分场景,避免对资源进行 DDoS。
  • 强大的灵活性:该库提供了多个自定义选项以适应不同的使用场景,包括自定义关闭、重试配置、退避算法选择以及时钟替换等。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2023」,领取 2023 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #273 | 2023-03-25

25 Dec 02:18
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

文章

🐎 独立开发提高产品定位成功率:找到 3 个对标产品

@zoeGuo:这是一篇独立开发者从自身经验中总结出的关于怎么找到产品方向,以及怎么提高产品定位成功率的文章。作者通过几个例子分别描述了“大池小鱼”原则,分别找到目标用户正在用的产品、同样卖点的产品以及你的参照产品,来快速定位你的独立开发产品。有多少读者是独立开发者或者正跃跃欲试独立开发呢?这篇文章也许会打开你的独立开发的思路哦~

🐕 货拉拉 iOS 模块化路由框架:TheRouterSwift

@EyreFree:这篇文章介绍了货拉拉团队开发的 iOS 模块化路由框架 TheRouterSwift,这是 TheRouter 系列的 Swift 版本,旨在提供给 Swift 开发者一个高效的路由框架,用于模块间解耦和通信。它支持页面导航跳转、路由自动注册、路由映射文件导出、服务自动注册、动态化能力、链式编程、Objective-C 的适配、本地和远程服务调用等功能,还支持异步获取注册类和路由本地缓存能力,以优化性能和提高灵活性。文章详细介绍了 TheRouterSwift 的功能和使用方法,感兴趣的同学可查看原文获取更多信息。

🐢 苹果 iOS 分发和安装 App 的那些趣事

@享耳先森:本文介绍了苹果 iOS 应用分发和安装的一些有趣的事。讨论了不同的开发者计划和分发方式:包括企业签名、超级签名、TestFlight 签名和 MDM 超级签名,还提到了开发者模式、企业账号、设备注册限制以及自定 App 和非公开 App 分发的解决方案。最后,讨论了欧盟的《数字市场法》对苹果的影响和可能改变苹果软件生态的可能性。

🐎 云音乐自研客户端 UI 自动化项目-Athena

@老峰:本文介绍了云音乐在 UI 自动化测试上的一站式解决方案 Athena,其采用了录制的方式解决传统自动化方案录制门槛高、效率低下的问题,在回放过程中前置准备用例执行环境以及结合曙光埋点提升用例执行的稳定性,并且会保留执行过程中的现场信息以便后续溯因。最后通过私有云部署,在云端即可统一调度 Android 和 iOS 设备来执行任务。

🐎 Symbolicating SwiftUI (and any Apple Framework)

@Damien:这篇博客文章介绍了如何使用 Emerge Tools 的开源 ETSymblication 库和 symbolicator 来符号化 SwiftUI 等 Apple 框架。这个过程包括使用 Framework 选择器和两个步骤:线程和偏移量来提取符号。然后,将这些符号以 CSV 格式存储在数据库中,以便在 symbolicator 中引用。文章还详细解释了如何下载和理解崩溃报告,以便从中提取和解释信息。对符号化感兴趣的同学不妨一读。

🐕 Trigger property observers from initializers in Swift

@Barney:本文介绍了几种 workarounds 使得 property observers 在 initialization 阶段也可以被触发。
简短实用,大家可以选择适合自己的方式。

  • Set properties after initialization
  • Separate property setup method
  • Create a defer closure
  • Manually trigger side effects

工具

MacSymbolicator

@含笑饮砒霜:这是一个用于符号化 macOS/iOS 崩溃报告的 Mac 应用程序,可以方便快捷的符号化 crash 和 ips 文件。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2023」,领取 2023 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #272 | 2023-12-18

18 Dec 03:30
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

文章

🐎 Flutter 小技巧之 3.16 升级最坑 M3 默认适配技巧

@Crazy:本文是一篇介绍如何在升级 Material 3 后,适配原有 Material 2 控件的文章,本文虽然读起来会很快,但是会为开发者减少大量的时间去解决系统级的适配问题。本文主要介绍了以下几个控件在 Material 3 升级后的变化,以及如何适配 Material 2 的方法。

  • AppBar: 背景的颜色,icon 的颜色,字体的颜色,都会被修改。文章中介绍通过修改 AppBarTheme 的 backgroundColor 来设置背景颜色,然后在 AppBarTheme 里配置 iconTheme 来修改 icon 的颜色与大小,最后通过 titleTextStyle 来修改字体的大小。
  • Card: 升级后的 Card 会在设置完颜色后仍然有浅蓝色的效果,文章中介绍通过在 ColorScheme 下设置 surfaceTint 为透明色就可以解决这个问题。
  • FloatingActionButton: 升级后此控件变化极大,不仅颜色变化,就连形状也发生了变化。文章中介绍首先通过修改控件中 floatingActionButtonTheme 属性里面的 backgroundColor 与 shape 两个属性完成背景颜色与形状的修改,然后通过修改 floatingActionButtonTheme 的 foregroundColor 属性来修改 icon 的颜色。
  • primarySwatch: 文章中提到如果之前使用了 primaryColorDark 和 primaryColorLight 作为配置,升级后会发生改变,只要在 ThemeData 中为 primarySwatch 参数赋值为 color as MaterialColor 即可解决。

🐢 Hummer 引擎优化系列 - PlatformView 的演进历史与优化探索

@CrazyCoderShi: PlatformView 是 Flutter 中插入 Native 组件的唯一方式,自诞生以来经历了多次迭代和优化;本文由 U4 内核技术组分享,沿着 PlatformView 方案的演进历史,剖析各个方案的实现原理和优缺点,给出最佳实践,帮助读者理解和正确选择 PlatformView 的渲染模式;小编强烈推荐各位在用 Flutter 技术的同学详细阅读本文。

🐕 SFSafariViewController in SwiftUI: Open webpages in-app

@享耳先森SFSafariViewController 常用于在 App 内打开外部链接,但目前并没有 SwiftUI 版本。本文深入浅出,开始使用 UIViewRepresentable 简单封装 UIKit 使其在 SwiftUI 可用,之后再结合 View Modifier 等特性优化。

🐕 网易云音乐 RN 新架构升级实践

@含笑饮砒霜:本文介绍了网易云音乐从 ReactNative 0.33 版本到 0.70 版本的升级历程,以及新架构升级的背景和收益。随着 RN 作为主要跨端方案建设的推进,业务对页面打开效率和使用体验的要求越来越高,跨端使用场景进一步扩大受阻。经过对比新老架构的性能、Bundle 包大小、客户端包大小、内存占用等多角度数据,新架构 Hermes 引擎预编译后性能得到了提升显著。

工具

🐕 Marin's Side Projects 2023

@EyreFree:这篇文章是 Marin 对自己 2023 年进行的几个业余项目的分享与总结。介绍了包括一个实时从项目源文件中追踪 TODO:FIXME: 注释的问题追踪器 Breadcrumbs、可视化显示 Package.swift 的 PackageView、使用 Swift 并发进行解压的 Unxippity、基于 Markdown 的应用程序演示制作工具 MarkWalkthrough、半 Markdown 编辑器半开发者控制台的 MarkPlayground、将文档作为 Markdown 文件处理的 PDFDoc 以及读取 Mac 控制台日志的 LogRider 在内的一些列应用程序,并提供了部分项目的代码,感兴趣的朋友可以看看。

🐕 Flutter 上了 Apple 第三方重大列表,2024 春季 iOS 的隐私清单究竟是什么

@极速男孩:苹果在 2023 年 WWDC 后宣布的隐私政策更新,对 Flutter 产生了重大影响。这些更新引入了第三方 SDK 的隐私清单,目的是提高数据收集和使用的透明度。Flutter 及其不少插件被苹果列为具有重大隐私影响,引发了对其数据实践的关注。这些更新要求开发者提交详细的隐私报告,包括数据收集类型、与用户的关联、跟踪用途和收集原因。此外,它们还要求声明跟踪域名,特别是在应用跟踪透明度 (ATT) 框架下,并要求对第三方 SDK 进行签名以防篡改。这些发展为 Flutter 开发者带来了挑战,特别是在适应 iOS 17 方面。

代码

MLX: An array framework for Apple Silicon (Made by Apple)

@老驴:Apple 也来赶最近的 AI 浪潮了。 Apple 发布了一个 为 Apple Silicon 特别优化的 Machine Learning 的框架,API 参照了 Numpy 和 PyTorch 进行设计,甚至写范例 port 了 LLaMA 这些热门的大语言模型。如果你最近也在玩大模型,尤其是想部署在本地的话,一起来学习下 Apple 的这个框架吧。

Async Algorithms 1.0 Released

@kemchenj:异步编程在避免堵塞的同时让我们失去了 control flow,但相对应的在异步的极致 Rx 里,我们也获得了 throttle/combineLatest 这些时间魔法。

Swift 新加入的 async/await 消除了同步编程和异步编程之间的差异,让我们可以在异步编程里也用上熟悉的 control flow,并且我们也没有失去时间魔法,它以 AsyncSequence 的形式存在于 Swift Concurrency 的世界里。

但 throttle/combineLatest 这些上层的操作符并没有直接在标准库里实现,而是在 Async Algorithms 这个库里探索实现,现在这个库发布了 1.0 版本宣布 API 的稳定。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2023」,领取 2023 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #271 | 2023-12-11

11 Dec 02:25
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新闻

25 hours of Xcode Cloud now included with the Apple Developer Program

从 2024 年 1 月开始,每个付费开发者都将免费获得每月 25 小时的 Xcode Cloud 服务。使用 Xcode Cloud 服务可以方便得完成打包上传提审 TF 这一系列操作,对于独立开发者来说不用花费时间精力研究 AppStore Connect API 还是很有吸引力的。

新手推荐

🐎 Play an animation in RealityKit

@zoeGuo:这是一篇介绍使用 RealityKit 在 3D 模型上实现动画的入门级文章。文章简单介绍了 RealityKit 为 3D 模型提供的默认动画如何使用,以及自定义动画的几种方法:定义 transform 变量,通过 move 方法做动画;定义对象的起始位置,使用 FromToByAnimation 方法做动画; OrbitAnimation 可以使对象从指定点开始做平滑的圆周运动;BlendTreeAnimation 可以将多个动画合并执行。

🐕 AsyncStream in the real world: wrapping an Apple Photos callback

@Barney:本文以获取相册照片为例,具体讲述了如何使用 AsyncStream 优雅地包装相册获取回调。

  • 普通写法展示
  • 进阶写法展示
  • 小问题解决

文章

🐢 现代 CPU 技术发展

@含笑饮砒霜:这篇文章深入探讨了现代 CPU 技术的多个方面。首先,它详细描述了提升 CPU 性能的各种方法,如增加晶体管数量、优化流水线微架构等。其次,文章强调了模块化设计在现代 CPU 设计中的重要性,以及如何通过组合基础指令集和扩展指令集来满足不同场景的需求。此外,文章也指出了功耗墙对 CPU 性能提升的限制,并探讨了未来可能通过新增 DSA 模块和使用 Chiplet 技术等方式来克服这些限制。在指令集架构方面,文章比较了不同指令集对 CPU 性能和能耗的影响,尤其关注了 x86 和 ARM 平台之间的差异。最后,文章还展望了未来 CPU 可能的发展趋势,包括提高 IPC 和时钟频率、增强多线程并行能力、优化内存技术以及采用大小核异构架构等。总之,这篇文章为读者提供了一个全面而深入的现代 CPU 技术概览,既回顾了当前的技术现状,又展望了未来的发展趋势。

🐎 Introducing Swift MMIO

@AidenRao:swift-mmio 是一个为嵌入式 Swift 生态系统设计的库,旨在为嵌入式固件开发提供安全、可靠的 API,例如读取和写入内存映射寄存器。swift-mmio 从 C++ 和 Rust 等语言的 mmio 库中汲取灵感,专注于提高与 MMIO 交互的代码的正确性。swift-mmio API 仍在不断发展,作者欢迎大家在 Swift 论坛、GitHub 上提供反馈,

🐎 2024 年 Kotlin Multiplatform 发展路线图 | 官方博客

@Crazy:本文是官方推出的一篇关于 Kotlin Multiplatform 在 2024 年开发计划的文章,主要介绍了 Kotlin Multiplatform 团队在 2024 年的整体规划。首先确认了 Compose Multiplatform 在未来的核心地位,ComposeUI 在 Android 端逐渐进入大家的视野,就像当年 Java 切换为 Kotlin 一样,CompseUI 也会逐渐替换 XML 的页面构建形式成为 Android 开发的主流,毕竟 XML 的弊端实在太多,虽然近几年有了 ViewBinding 和 DataBinding 的辅助以后已经好了很多,但是对比于 Flutter 这种简单且快速的构建方式来讲差了很多。在工具方面 Fleet 已经可以开发 Kotlin Multiplatform 并且文章中介绍后续会快速迭代完善开发体验.对于 Multiplatform 核心的研发主要还是提升全平台开发者的开发体验,比如提升编译速度,在 IDE 与构建系统中即成 Swift Export 等。最后是对库生态的介绍,总结一下就是虽然稳定,但还需努力,改动一定很大,但是会兼容。让我们共同期待 Kotlin Multiplatform 可以像 Flutter 一样,在某个时间给我们一个惊喜。

🐎 Upcoming third-party SDK requirements

@Damien:在 2024 年春季,苹果商店即将开启 Privacy manifests 清单的审核,届时,在上传 App 的时候,我们需要提供隐私清单和 SDK 签名,此外苹果也给出了最新的 SDK 名单列表。请大家一定尽早准备,以免在审核期间被拒审。

🐕 MusicKit and App Clips

@anotherenMusicKit 是一个与 Apple Music 交互的 Apple 官方框架,这是开发者最方便获取 Apple Music 内容的方式,但是它在 App Clips 中工作不正常。作者介绍了如何通过 URLSession 直接构造 Apple Music API 请求,来直接获取相关数据。

代码

🐎 Pow: Delightful SwiftUI effects for your app

@zvving:Pow 是一款基于 SwiftUI 的动画库,其官网详细提供了各类内置动画的预览和上手指南,能方便地为你的 App 注入精美的动画效果。最近,Pow 宣布开源,为那些寻求深入理解 Pow 动画实现的开发者们提供了便利,强烈推荐大家尝试使用和学习!

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2023」,领取 2023 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #270 | 2023-12-04

04 Dec 02:25
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新闻

即将迎来圣诞审核高峰,各位开发者调整好提交时间

苹果预告将在 12 月 22~27 日 迎来圣诞假期,期间审核会相对变慢,根据惯例加急也会照常开放,有期间发版需求的同学需要早做安排。根据往年经验在 20 日提审大概率可以在高峰来临前通过审核。

文章

🐕 建立个人学习观|地铁上的自习室

@含笑饮砒霜: 本文旨在帮助初入职场或陷入迷茫的读者建立个人学习观,强调在日常生活中保持学习心态,在不同空间和阶段中收获额外的东西,让学习成为一种习惯,丰富自己的知识和人生。

🐎 Missing Xcode run test buttons

@Barney:Xcode 运行测试按钮缺失恢复的小技巧、复制测试类名到导航器面版的过滤器中然后在该面板中点击播放按钮。

🐎 Apple’s use of AppKit, Catalyst, Swift and SwiftUI in macOS Sonoma

@Smallfly:这篇文章对 macOS 的开发组件和语言的演变提供了深入洞察,涉及了二进制数量、编程语言选择以及 UI 框架采用等方面。Sonoma 总共有 7884 个二进制文件,其中 Objective-C 仍然是核心语言,Swift 使用率不断增加。

SwiftUI 在 Sonoma 中得到显著应用,文章还观察到 Swift 在安全区域处理器中的使用,展示了 Swift 在受限环境中的适用性。总体而言,Swift 和 SwiftUI 的采用不断增长,而 Mac Catalyst 则呈下降趋势,标志着这项技术已进入过渡期。

🐕 Observable Architecture Beta!

@zvving:Swift 5.9 引入的 @Observable 标志着数据驱动 UI 方式的重大转变。随着这种变化,The Composable Architecture(TCA) 项目推出了重要的升级——集成 Observable 并向后兼容至 iOS 13 的新版本。目前,TCA 项目在 GitHub 上的关注已度突破了一万星标。

值得指出的是,TCA 是一种有较高学习和应用成本,但同时又提供大量示例和教程的重量级框架。如果你对 TCA 感兴趣,可以通过TCA - SwiftUI 的救星?系列文章聊一聊可组装框架(TCA)或阅读官方教程来深入了解。

🐎 《产生式元编程》第三章 替换蓝染概念纤悉

@J_Knight_:本文作者结合代码介绍了宏被替换的过程:如果是有参数的宏。会先替换参数;如果是无参数的,则直接扫描。系统会将扫描一直循环进行下去,而扫描停止的条件是触发了蓝染。蓝染的概念是:一次扫描中,若是替换的 token 引用了其自身,该 token 就会被标记为不可处理状态。这个标记动作就称为 Painted blue。然后作者讲解了蓝染的触发机制,以及剖析了 C 预处理器不支持递归的原因。

🐎 初探 SwiftUI Link

@kemchenj:本文从 Link 在 watchOS 上无法成功打开链接开始探究,先是逆向出 Link 的实现,接着是私有 API _openSensitiveURL 的调用,OpenSensitiveURLActionKey 的实现细节,最终将研究的内容汇总得到最合理的解决方案。

🐎 iPhone 加入游戏,但 USB-C 的乱纪元还没有完结

@老驴:来自少数派的一篇科普向的文章,主要是给大家梳理下 USB-C ,Thunderbolt 和传输协议之间的各种交错复杂的关系。不过,即便你没有能完全搞懂也没关系,因为大多数情况下不影响基本的充电,而更多的是影响数据传输速度。

工具

devv.ai

@zoeGuodevv.ai 自称“最懂程序员的新一代 AI 搜索引擎”。你可以用它来搜索某个技术名词,可以获得比较完善的技术摘要,还有引用原文。可以在上一问题上追加提问,因为接入了搜索引擎的数据,回答结果也都比较新,程序员可以试试用它学习一些新的概念。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2023」,领取 2023 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #269 | 2023-11-27

27 Nov 02:27
da334b4
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新闻

🐢 Flutter 3.16 + Dart 3.2 发布

@CrazyCoderShi: Flutter 常规季度更新发布了,本次发布为 Flutter 3.16 + Dart 3.2; 一如既往,本次更新还是以稳定性和性能优化为主,其中值得关注的是 Android Impeller 和 Material 3 成为新的默认主题, 当然了在组件和工具链上也做出了不少改进和更新,感兴趣的同学可以在文中注意查看;另一个值得关注的点是 Dart 3.2 发布,该版本在 Dart Web 和 Wasm 做了较多更新,从这里可以看到 Flutter 团队对于浏览器端的努力一直在持续,可预见的是 Flutter 在浏览器端的未来可期

新手推荐

🐎 Swift strings look identical but aren't

@极速男孩:这篇文章介绍了两个看起来相同的字符,因为当中包含一个 '\u{FEFF}' 字节顺序标记导致他们出现不相等的情况,作者用了 String 扩展和 'trimmingCharacters(in: .controlCharacters)' 的方式来移除这个标记。

文章

🌟 🐢 What Every C Programmer Should Know About Undefined Behavior #1/3 #2/3 #3/3

@Smallfly:这是探讨 C 系语言未定义行为的系列文章。在系列的第一部分中,作者解释了 C 语言中的未定义行为,并展示了一些案例,说明了它使 C 语言比「安全」语言更具性能的原因。在第二部分,探讨了未定义行为导致的令人惊讶的错误,以及许多程序员对 C 语言存在的一些广泛误解。在最后一部分,探讨了编译器在提供陷阱警告时面临的挑战,并讨论 LLVM 和 Clang 提供的一些功能和工具,以实现性能提升的同时减少一些意外情况发生。

🐕 Debugging SwiftUI views: what caused that change?

@Barney:本文介绍了调试 SwiftUI 的关键技巧。使用 Self._printChanges 或 Self._logChanges 静态方法可以帮助我们找到引起重绘的根本原因。将视图单一化简单化往往是排查复杂问题的关键,文章分下面五个步骤娓娓道来。

  • What is a dynamic SwiftUI View?
  • The problem of a Massive SwiftUI View
  • Using LLDB to debug a change
  • Solving redraw issues in SwiftUI
  • Debugging changes using code

🐎 Custom Traits and SwiftUI

@Damien:本文主要讲述了在 iOS 17 中,开发者可以添加自定义 Traits 到 UIKit Traits 环境中,并与 SwiftUI 环境进行互操作。在 iOS 17 中,Traits 的处理方式发生了重大变化,Traits 现在可以从 UIScreen、UIWindowScene、UIViewController、UIView 等流向任何子视图控制器。此外,还介绍了如何创建一个自定义 Traits,并给出了一个实际的例子。

🐎 Revealing and explaining package scores

@EyreFree:这篇文章主要介绍了 Swift Package Index 中的一个新功能:Package 评分,并解释了这个分数是如何计算的。得分系统基于多个特征来评估软件包,包括:软件包是否被存档、是否拥有与 App Store 兼容的开源许可证、发布次数、Star 数量、依赖数量、最近活动、文档和贡献者数量、是否有测试代码和是否有 README 文档等,可以作为大家选择开源库的参考。

代码

MachOView

Mach-O 相信很多同学或多或少已经接触过或者有所了解,它是 Mach Object 文件格式的缩写,是 mac 以及 iOS 上的可执行文件。MachOView 这个工具可以快速查看 Math-O 格式的文件,简单易用,同时工具在今年迎来了 3.0 版本的大更新。对于经常需要分析静态库等文件的同学可以下载使用

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2023」,领取 2023 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #268 | 2023-11-20

20 Nov 02:41
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新手推荐

Generating Random Numbers Elegantly in Swift

@zoeGuo:文章介绍了在 Swift 中使用 RandomNumberGenerator 实现产生随机数的方式。写法优雅,可以产生自己任意范围的随机数,线程安全,还会根据 Swift 运行的平台来决定实现随机数的 api。

文章

🐎 Reasoning about protocols

@J_Knight_:本文作者结合代码实例介绍了在 Swift 中面向协议编程的几个应用场景(动态派发,类泛型,编译期约束和实现合成)。

🐕 在 Airbnb 爱彼迎解锁 SwiftUI

@AidenRao: 这篇文章介绍了 Airbnb 在 iOS 应用中采用 SwiftUI 替代原有的 UI 框架 Epoxy 的实践。 也解释了为什么他们决定在 Airbnb 中使用 SwiftUI,并详细介绍了如何将 SwiftUI 集成到 Airbnb 的界面设计中。一个很好的实践,可以作为大家引入 SwiftUI 的参考。

🐕 The complete guide to iOS & macOS development in Neovim

@Smallfly:使用 Xcode 开发大型项目的体验一言难尽,这篇文章手把手教你如何在 Neovim 搭建 iOS&macOS 开发环境。支持的功能主要有:

  • 代码补全(Code Completion)
  • 代码检查与格式化(Linting & Formatting)
  • 构建、运行与测试(Build, Run & Test)
  • 调试(Debugging)

所有这些一起至少覆盖了 90% 以上的开发时间,还有少部分功能还是需要依赖 Xcode,例如性能跟踪、调试 UI、管理签名证书等。如果你是一名 vim 党,推荐一试。

🐎 An early look at the future of testing with swift-testing

@kemchenj:Swift 团队在前一段时间推出了 swift-testing 的 beta 版本,旨在替代 XCTest,让开发者可以用更加现代化的语法编写测试。

这篇文章用一个简单的例子介绍了 swift-testing 的接入和用法,可以看到跟 XCTest 对比提供了更简洁的语法,更好的 async 支持以及更加清晰的诊断信息。

百度 APP iOS 端包体积 50M 优化实践(七)编译器优化

@JonyFang: 本文介绍了百度 APP iOS 端包体积优化的编译器优化方案。涉及到的点有:GCC 语言编译优化、Swift 编译优化、LTO 优化、剥离调试符号、剥离符号表、剔除未引用代码、Asset 优化、C++ 虚函数优化、三方 SDK 编译器方向瘦身、指令集架构优化、Xcode 升级优化、Swift 内置动态库优化等。

工具

SwiftBar

@xuyafei86:SwiftBar 是一款使用 Swift 编写,用来在 MacOS 菜单栏上展示自定义功能的开源工具。可以使用 Homebrew 安装,只需编写一个 Shell 脚本并将其添加到 SwiftBar 即可使用。你还可以从其插件仓库安装别人编写的脚本,比如展示 CPU 和内存占用、处理文本等。

设计

🐎 Ensure Visual Accessibility: Glyphs, Icons and Shapes

@水水:了解如何正确使用应用程序 UI 上的视觉元素,同时保持其可访问性,包括字形、图标和形状,这些是传达信息、指导我们行动和塑造我们感知的基础。在苹果生态系统中鼓励正确的使用象形文字以及其组合来设计你的视觉元素,需要保证其具有清晰、一致性并且支持辅助功能标签。这篇文章还给了很多相关设计上的具体建议,感兴趣的可以参考。

音视频

🐢 SwiftUI + Metal – Create special effects by building your own shaders

@Cooper Chen:视频介绍了基于 SwiftUI + Metal 的形式,通过构建自己的着色器来创建特殊效果,包括如何重新着色、如何实现动画渐变、如何进行形状转换等内容,对于从 c++ 过渡到 SwiftUI 开发 Metal 相关内容的开发者有着很好的参考价值。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2023」,领取 2023 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #267 | 2023-11-13

13 Nov 14:08
9558f61
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

 Developer - 设计开发加速器

Apple Vision Pro 挑战赛

挑战赛地点在上海,分为两场,分别是 11 月 21、22 日,12 月 5、6 日,还没有亲自体验过 Vision Pro 的同学可以报名尝试参加,苹果会培训 空间计算 相关的知识。

文章

🐢 深入浅出 MachO

@JonyFang: 本文通过对 MachO 文件的文件格式研究,介绍了 MacOS 和 iOS 中可执行文件的加载过程,从内核中的处理一直到动态连接器 dyld 的代码分析。可以看出 MachO 与 ELF 相比实现方式各有优势,但是在内核中原生增加了对代码的签名和加密,其实 ELF 也很容易实现类似的功能,但开放系统需要更多考虑兼容性的问题,不像苹果可以大刀阔斧的改动。对于 MachO 的深入理解其实也有助于日常的相关优化,比如 Apple Store 的加密实现以及代码签名的大致原理,还有针对 dyld_cache 的处理等,其中每一项都值得去深入挖掘。

🐎 Calculating a Smooth Clock Hands Animation

@Smallfly:这篇文章分享了作者在 Widgetsmith 应用中解决时钟指针旋转角度计算问题的经历。开始是发现在 iOS17 下旋转动画问题,于是进行了多次调整,尝试通过考虑每天的开始角度和连续旋转的方案,不过依然存在问题。最终,作者采用了一种基于天数计算的方法,考虑了每天时钟指针的完整旋转次数,并通过测试验证了这一解决方案的有效性。作者提供了方案的 Demo,有相关需求的读者不妨一读。

🐕 Bad practice: not using multiline strings

@Barney:本次推荐是一篇博客,简单介绍了 Swift 对多行字符串的支持,尽量避免主动在字符串中加入 \ 使得代码越来越难以维护。文章浅显易懂还附带视频,一分钟时间就可以掌握一个小知识,值得一看。

🐕 iOS Crash 治理:淘宝 VisionKitCore 问题修复

@Cooper Chen:本文详细介绍了手淘技术团队定位 iOS 16.0 ~ iOS 16.2 WKWebView 的系统 bug 的过程,文章详细介绍了如何通过堆栈特征分析、版本对比等方式进行问题原因分析,到最终提出了详细的解决方案,并进行线上验证的过程,其中涉及的 Crash 排查思路值得开发者学习和借鉴。

🐕 iOS libMalloc 源码分析

@老峰:libMalloc 作为内存分配器,研究相关机制,对于理解操作系统内存管理有较大价值。本文作者针对 iOS 底层堆内存分配器 libMalloc 的开源版本(libmalloc-409.40.6)结合源码分析了 NanoZone、ScalableZone(tiny、small、medium、large )不同的内存机制。

🐕 Progress toward the Swift 6 language mode

@AidenRao:该文章介绍了 Swift 6 的发展和计划,目前的重点在于默认情况下避免数据竞争。逐步采用即将到来的语言 对于迁移到 Swift 6 至关重要:可以一次启用一项即将推出的功能,以逐步将代码库迁移到 Swift 6。

🐎 Things I wish someone would have told me about configuring VSCode

@anotheren:本文介绍了一些 VSCode 设置的小技巧,包括:

  • 使用 .gitignore_global 来全局忽略 .vscode 文件夹;
  • 工作区级别的插件设置;
  • 内建终端的使用;

推荐使用 VSCode 的同学一看。

🐎 Hierarchical background styles in SwiftUI

@Damien:本文内容主要讲述了如何在 SwiftUI 中获取和使用系统背景颜色。在 iOS 17 之前,我们通常需要从 UIColor 转换来获取这些颜色。但从 iOS 17 开始,可以直接通过 ShapeStyle 的实例来获取,例如 secondary,tertiary 等属性。这些背景颜色取决于当前的操作系统和颜色方案(启用了浅色或深色模式)。

🐎 Why Curiosity Is Better Than Being Smart?

@水水:为什么好奇心比聪明更重要?这篇文章作者从自己出发来告诉读者为什么好奇心很重要,聪明人的思维过程是怎样的、好奇心为什么可以让人变聪明甚至可以变的更聪明、以及如何提高好奇心。好奇的读者可以看看本文哦 ~

开源库

🌟 Grape

@Leo:一款 swift 编写的支持力模拟和可视化绘制的开源库,兼容 iOS/macOS/vision OS/watch OS. 开发者可以直接利用可视化能力绘制 Force Directed Graph(力导向图),也可以用力模拟模块来自定义实现一些能力。

音视频

NSSpain XI (2023)

@含笑饮砒霜:NSSpain 是一个知名的 iOS 开发者会议,在 NSSpain XI (2023) 中,涵盖了包括应用程序设计、性能优化、新的开发工具、Swift 编程语言的最新进展以及与 Apple 生态系统相关的多个主题,这个会议为开发者提供了与同行建立联系和交流的绝佳机会。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2023」,领取 2023 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #266 | 2023-11-06

06 Nov 02:15
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新手推荐

🐕 2023 年每个软件开发者都必须知道的关于 Unicode 的最基本的知识(仍然不准找借口!)

@xuyafei86:本文使用风趣幽默的语言和生动的配图介绍了字符串编码的发展和 Unicode / UTF-8 的 “基本知识”,可以帮助读者更深入的理解 Swift 中字符串的设计。感兴趣的同学可以阅读原文了解。

文章

🐕 视频号直播:如何进一步降低功耗占用?

@莲叔:这篇文章从一个简单的问题出发:同样的直播间,在有点赞动画时的帧率和 gpu 占用显著高于无动画时,一步步讲解了 iOS 系统渲染的原理以及推导了问题的原因,给出了解决办法(通过 iOS 15 提供的新的 CAAnimation 的 API)。之后进一步分析了系统方案的原理,并且给出了将动画帧率控制从 CAAnimation 动画扩展到 UIView block 动画以及 UIScrollView 动画中,实现整体更稳定的帧率,方案很完整。另外,解决问题是一方面,文章更有价值的点还是对于 ios 的渲染原理做了比较详实的描述,推荐大家阅读。

🐕 深入理解 MachO 结构与运行时系统

@Barney:本篇文章详细介绍了 MachO 的结构。前半段主要是结构分析,后半段着重描述 OC 相关数据。理解这些有助于日常写出更高性能的代码,可以反复仔细阅读。

  1. LINK EDIT、符号表、Fishhook 原理介绍。
  2. OC 相关数据的详细介绍
  3. 探究这些的意义

🐎 Switching Build Systems, Seamlessly

@Smallfly:本文主要分享了 Spotify 团队无缝切换构建系统到 Bazel 的过程。随着移动应用程序的规模越来越大,他们的代码库年均增长率超过 30 %,开发者的幸福感和生产力显著下降。通过迁移到 Bazel,一个超大工程原本使用 Xcode 构建耗时超过 45 分钟,迁移后时间缩短到少于 10 分钟。这个过程经历多套构建系统并存以及层层的验证,最后实现能完全由 Bazel 构建 iOS 客户端。

🐢 How async/await works internally in Swift

@EyreFree:文章主要探讨了 Swift 中 async/await 的内部工作机制。开头解释了 Swift 的内存安全目标,及并发问题如何影响这个目标。随后,文章深入探讨了 GCD 如何处理并发,以及它的局限性。文章强调了 Swift 引入 async/await 的重要性,例如用以改善并发管理,减少未定义行为等。最后,概述了 async/await 的历史,以及如何利用它来简化并发代码的编写,推荐阅读。

🐢 Working With UIViewRepresentable

@极速男孩:这篇文章中,他探讨了在 SwiftUI 中使用 UIViewRepresentable ,NSViewRepresentable 或 UIViewControllerRepresentable 来实现 SwiftUI 和 UIKit/AppKit 之间状态通信的几个挑战和解决方案。主要点包括:

  1. 根据 SwiftUI 状态变化更新 UIView 时,只更改必要的 UIView 属性。
  2. 对于 UIKit 变化影响的 SwiftUI 更新,应异步执行以避免运行时警告。
  3. 通过创建一个 MapView 包装器和一个 NSTextView 包装器为例,解释了如何在更新方法中仅在必要时更新视图,以及如何缓存并比较值以避免不必要的更新。
  4. 如何通过修改绑定或调用闭包来从 NSView 向 SwiftUI 通信事件。

🐕 Fatbobman ’ s Swift Weekly

@老驴:Fatbobman 在结束了 100 期的摸鱼周报之后新开了个新坑,叫 Fatbobman ’ s Swift Weekly,目前已经出到了第三期。Fatbobman 的周报和老司机的周报比较类似,会推荐一些 Swift,iOS 开发的相关内容,但是提供了双语内容。有兴趣的话可以关注或者订阅一波。

🐕 记一个诡异的 TCP 挥手乱序问题

@Crazy:本文是一篇网络底层的讲解文章,内容有一定深度,并且给大家提供了很多解决这种疑难问题的思路。作者从一个挥手乱序问题开始,告知了大家问题出现的原因:四次挥手中,由于 fin 包和 ack 包乱序,导致等了一次 timeout 才关闭连接。之后又从这个结果开始介绍解决问题的思路与过程,其中包括问题复现试验,内部源码分析,修改内核配合测试,最后确认问题位置。本文最后更是讲解了 close() 下的 tcp 状态转移问题。本篇文章涉及了许多 TCP 的源码与底层知识,读起来会偏久,重要的是学会作者处理这种疑难问题的思路与方法。

音视频

🐕 Swift Connection 2023 - Hidde van der Ploeg - How to Make Your App Look Like You've Hired a Designer

@Cooper Chen:这个视频是 Swift Connection 2023 关于普通开发者如何在没有设计师的情况下,遵循一些设计规范来保证 App 的设计感,其中包含以下几点:

  • 定义明确品牌(Define a clear brand)
  • 设计是一种感觉(Design is how it feeling)
  • 保证设计的一致性(Consistence)
  • 保证用户的关注点(Keep focus)
  • 使用层次结构(hierarchical)
  • 给 UI 保留空隙(Give sapce to breath)

这个视频对于独立开发有着很好的参考价值,能帮助开发者更好的设计自己的 UI 界面。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2023」,领取 2023 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #265 | 2023-10-30

30 Oct 03:11
Compare
Choose a tag to compare

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新闻

iOS & iPadOS 17.2 Beta & Xcode 15.1 Beta 2 Release

上周苹果发布了 iOS & iPadOS 17.2watchOS 10.2Xcode 15.1 等系列 Beta 版本的更新。较为重要的信息如下:

  • SwiftUI 新增了 API _logChanges() 方便开发者在 Debug 下打印 SwiftUI 的变更。与 _printChanges() 区别仅在于 _logChanges() 会将日志也打印到系统控制台中。此 API 对所有 iOS/iPadOS/watchOS 等都有效。

  • 对使用 Xcode 15.0 构建包含 swift 代码的 App 会较老的 MAC 版本 (10.13) 启动时崩溃,workaround 方案是添加 $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/macosx/libswiftAppKit.dylib 到 Other Linker Flags 中,此问题在 15.1 Beta 中已修复。详见:swift/issues/68163

文章

🐎 Bad practice: not using Phantom Types

@Damien:这篇文章讨论了在 Swift 编程中使用虚类型(Phantom Types)引发的错误。作者首先构造了 2 个示例对象,使用虚函数并且导致了错误的行为。随后提出了改进的方案,从而避免了错误的代码行为,想了解 Swift 虚函数感兴趣的同学不妨一读。

🐎 Designing for spatial computing: from iOS and iPadOS to visionOS

@Smallfly:这篇文章介绍了苹果的 visionOS 以及它在空间计算领域的重要性。文章强调了设计师和开发人员需要了解空间设计的基本原则,以及如何将应用程序从 iOS/iPadOS 平稳地过渡到 visionOS。文章还介绍了 visionOS 应用程序的核心结构,包括窗口、体积、标签栏、侧边栏、装饰、菜单和弹出窗口、以及模态视图。最后,文章强调在从 iOS/iPadOS 过渡到 visionOS 时,需要考虑应用程序的核心功能,并将其适应空间计算范式,而不仅仅是简单地将应用程序移植到新平台。

🐎 Being a good citizen in the land of SwiftSyntax

@zvving:作者使用 SwiftSyntax 依赖管理的实例,详细解释了如何制定更加灵活的主版本依赖声明,从而规避由与第三方库的依赖关系引起的冲突。同时,他建议通过将核心库和可选库分拆,来防止不必要的编译开销。这些思路为 Swift 库的开发者提供了有益的参考。

🐎 Apple ’ s use of Swift and SwiftUI in iOS 17

@JonyFang:通过 iOS 内置应用程序使用的编程语言,分析到 iOS17 的版本过程中 Swift、SwiftUI 的覆盖比例。通过分析结果可以看到:Objective-C 仍然是 iOS 的核心,并被大多数应用程序直接或间接使用。Swift 和 SwiftUI 的采用持续增长,而 Objective-C、C 和 C++ 的份额逐渐减少。

🐎 The Care and Feeding of Developer ID

@水水:这个链接集中记录了对于开发者 ID 签名身份方面会遇到的问题,以及一些注意事项和 Tips。这里还介绍了如何备份你的私钥以及如果你没有独立备份你的开发者 ID 签名身份,如何从 Mac 的常规备份中恢复它。读者可以收藏此链接,可以作为后续关于签名方面的问题参考 ~

工具

🐎 Apparency - The App That Opens Apps

@J_Knight_:介绍了一个可以查看 Mac 应用信息的 Mac 应用:Apparency。具体可以查看的信息是:使用的 framework,Info.plist,macOS version info,identifiers,document types 和 URLs 等等信息。

音视频

Matthew Massicotte - The Bleeding Edge of Swift Concurrency

@含笑饮砒霜:这是一个探讨 Swift 并发编程主题的视频,并发编程是一个涉及异步操作和并行处理的领域。该视频将介绍 Swift 中的 async/await 机制和 actor 模型,并讨论如何避免在引入这些机制时可能出现的竞争条件和死锁等陷阱。它的目标是帮助观众了解如何在编写并发代码时避免常见的陷阱和错误,从而编写出更可靠、高效的代码。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)

关注我们

我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。

关注有礼,关注【老司机技术周报】,回复「2023」,领取 2023 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)