Skip to content

Releases: SwiftOldDriver/iOS-Weekly

老司机 iOS 周报 #280 | 2024-03-11

11 Mar 02:08
Compare
Choose a tag to compare

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

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

新闻

Privacy updates for App Store submissions

Privacy manifests and signatures 的 deadline 来了,5 月 1 日。目前大部分知名第三方库都已经完成了适配,例如:SDWebImageFMDBProtobufSnapKit 等,但也有部分如:MBProgressHU、Starscream 等年久失修可能得自己处理下。

 Developer - 设计开发加速器

Apple Vision Pro 开发者实验室 与 探索《人机界面指南》

上海的 Vision Pro 的开发实验室即将迎来多场活动,3 月 27 日4 月 24 日 的线下实验室,以及 4 月 10 日的 1 on 1 线上咨询

4 月 2 日还有探索《人机界面指南》 的活动。

还没有亲自体验过 Vision Pro 的开发者千万不要错过本次活动。

新手推荐

The power of inout parameters

@zoeGuo:Swift 函数参数是常量,这意味着不能在函数内部修改入参的值。将参数标记为 inout 实际是将入参值引用,从而实现在函数内更改其值。文中举例了富文本 context 跟随 textView 的各属性值变化的例子说明使用 inout 参数可以减少重复表意的代码、使代码更简洁。

文章

🐕 Why Ollie is moving away from SwiftUI to UIKit

@JonyFang: 本文描述了该团队在 SwiftUI 应用过程中经历了一系列关于 SwiftUI 和 Swift 并发的问题,最终决定从 SwiftUI 迁移到 UIKit。他们指出 SwiftUI 的抽象和不确定性给开发带来了更多的开发成本,在处理复杂的业务逻辑和多线程时问题更为明显。SwiftUI 的"魔法"和 AttributeGraph 的不确定表现让 debug 变得困难。开发过程中 Swift 并发的死锁问题也让开发者头疼,而其异步执行的顺序问题使得调试变得复杂。

作者强调了 SwiftUI 可能正在经历第二系统效应(second-system effect),第二系统效应可能造成软件专案计划过度设计,产生太多变数,过度复杂,无法达成期待,并因而失败。他们解释了在使用 SwiftUI 和 Swift 并发时的一些错误实践,包括对 MVVM 和对 SwiftUI 内部属性的误用。他们还提到了对 Combine 的迁移以及将重型操作移到显式调度队列的决策。

为了解决问题,团队决定迁移到 UIKit,并举例说明了一个使用 UIKitCollectionView 的案例在性能上远远超过 SwiftUI 版本。

🐕 How to determine where tasks and async functions run in Swift?

@Kyle-Ye: 本文解释了 Swift Task 和异步函数的运行规则,以及它们和 GCD 心智规则的不同之处。作者首先介绍了不同的 Task 类型 - 分离 Task 和非结构化 Task,其次重点解释了 Swift 对于不同 Task 的调度规则。

如果上下文被 @MainActor 或其他全局 Actor 关联或隔离,则创建的非结构化 Task 会在对应 Actorexecutor 中执行,否则会被调度到默认的全局 executor 中执行。

注意某些协议也可能携带 @MainActor 约束以及我们可以在测试代码中使用 MainActor.assertIsolated(_:) 来进行运行时的 @MainActor 隔离检查。

C++ 常见避坑指南

@莲叔:腾讯是大厂中 C++ 使用度最高的公司,很长一段时间几乎所有的后端服务都是用 C++ 开发完成的。本篇文章介绍与总结了 C++ 在大规模工程开发中最常见的问题,非常有价值。新手使用 C++ 往往很容易被淹没在无数的语言细节里,同样的逻辑也会有多种写法,这个时候如果有一个身经百战的前辈出来给你划重点,那练级效率必然会事半功倍。这篇文章就给我这样的感觉,推荐给需要在工作中使用 C++ 的技术同学阅读。

🐎 Everything you need to know about Swift 5.10

@含笑饮砒霜:伴随着 iOS 17.4 和 iPadOS 17.4 的发布,Apple 推出了 Swift 5.10,这一版本在并发性方面取得了显著的进步。Swift 5.10 主要针对 Swift Concurrency 的数据安全功能进行了改进,特别是在严格并发检查方面。通过增强并发检查,Swift 5.10 现在能够更准确地识别并标记出不安全的代码,从而帮助开发者在编写并发代码时避免数据竞争和其他线程安全问题。Swift 5.10 还引入了 SE-0412 提案,该提案限制了全局变量的并发访问,进一步提高了 Swift 在编译时防范数据争用的能力。这意味着开发者在编写涉及共享状态的代码时,需要更加明确地考虑其并发安全性。

🐢 The power of self-sufficient features

@享耳先森:一个功能最好是相对独立,尽量减少对外部的依赖,本文介绍了 self-sufficient features 的几个原则:

  1. 自身加载必须的数据,而不靠外部传入
  2. 内部处理各种错误,而不向外传递
  3. 不要依赖或修改堆栈

🐕 How to use VariadicView, SwiftUI's Private View API

@Cooper Chen:本文介绍了 SwiftUI 中私有视图 API 称为 VariadicView,,通过枚举 _VariadicView 是这个类的入口,它包括其他类型,例如_VariadicView_MultiViewRoot 和_VariadicView. tree 等等,文章介绍了如何使用 VariadicView 以及其安全性,对于 SwiftUI 相关开发有不错的实用性。

🐕 High Performance Swift Apps

@DylanYang:本文作者从自己的 App 入手,详细讲述了如何着手优化 App 的性能,其中包含了问题分析、Instruments 的简单使用说明以及最终的代码实践,非常适合新人入门。其中作者的一个观点也是非常令人赞同:应该先找到问题,聚焦在真正的瓶颈上,避免在琐碎的点上投入太多精力。

代码

🐢 ConcurrencyRecipes

@AidenRao:作者表示 Swift Concurrency 很难用,所以整理和记录了一些使用 Swift Concurrency 遇到的问题和解决方案,并欢迎大家一起共建。

内推

重新开始更新「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 周报 #279 | 2024-03-04

04 Mar 02:27
Compare
Choose a tag to compare

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

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

新手推荐

How to make a completionHandler much safer

@zoeGuo:我们经常会用 completionHandler 来处理异步事件,但是很难保证所有逻辑下都能执行到 completionHandler 的逻辑。那么在 Swift 语法中可以使用 defer 关键字,defer 可以确保 completionHandler 在方法返回之前一定被调用,编译器会检查在每个可能的代码路径中都能顺利执行到 completionHandler。原文有更详细的代码示例说明,还有视频讲解。

文章

🐕 从入门到精通:如何解决 C++ 模板代码膨胀问题

@老峰:C++ 模板是一种强大的编程工具,它允许我们编写通用的、可重用的代码,本文介绍了通过模板函数提取通用部分;模板类抽象出通用部分到基类,合理使用模版等优化策略提高编译速度,减少二进制文件大小解决代码膨胀问题。

🐎 Swift 6.0 Release Process

@AidenRao:Swift 社区公布了 Swift 6 的发布流程及预期时间表。2024 年 3 月 15 日,将从 Swift 主分支中切出 release/6.0 分支开启发布流程,正式版本预计将于今年下半年与新版 Xcode 同步发布。

🐎 ImGui 在长桥跨端图表组件中的探索与应用

@Smallfly:长桥技术团队在 iOS App 中升级 K 线图表组件,面临业务复杂度高、两端重复开发等问题。在对比各种成熟跨端方案之后,他们选择了 ImGui 作为跨平台解决方案,利用其 GPU 渲染和简单 API 实现高性能图表。它使用各平台支持最好的渲染框架,有着完善的图表绘制能力,即使加载大量数据,在多个平台上依然有流畅体验。

🐢 天美引擎工程师:如何使用移动端硬件特性提升游戏上限?

@含笑饮砒霜:在 Unreal Open Day 2022 上,腾讯天美工作室的引擎工程师王烁分享了如何使用移动端硬件特性提升游戏渲染效果。他提出,利用硬件特性如 VRS(可变着色率渲染)等可以有效解决移动端渲染中的常见问题。将渲染分为应用图形学算法、渲染管线、图形 API 层和 GPU 驱动层四层,并强调了了解这些层级对于手游开发的重要性。了解硬件特性如 Vulkan 中的 VRS 和 Hidden-surface removal 等可以帮助开发者针对目标机型选择适当的特性,从而提升游戏渲染效果。通过利用这些硬件特性,游戏开发者可以在保证游戏性能的同时,提高游戏画面质量,从而提升游戏体验。王烁的分享为游戏开发者提供了一种新的思路和方法,对于提升游戏上限具有重要的指导意义。

🐕 try catch 失效排查 - 探索异常处理机制的迷雾

@xuyafei86:C++ 异常处理机制 try catch 在快手 App 内突然失效,引发大量未捕获异常导致的崩溃。本文介绍稳定性团队排查此次问题的过程,问题的根本原因以及修复规避方案,最后梳理异常处理流程,知其然,知其所以然,方能在问题出现时冷静应对。感兴趣同学可以阅读原文了解。

🐕 How the Swift compiler knows that DispatchQueue.main implies @MainActor

@Barney:文章讨论了 Swift 编译器如何识别 DispatchQueue.main 为 @mainactor,这是通过检查源代码实现的。当使用 DispatchQueue.main.async 时,系统会自动将其视为 @mainactor,这使得在主线程上执行并发任务变得方便。然而,这种行为并未在 Xcode 等 IDE 中明确显示出来,作者希望能直观显示 @mainactor 和相关并发信息,以便更好地理解和学习 Swift。

🐎 ARM 汇编系列

@Crazy:汇编是客户端开发人员很少接触的一个方面,一般在 Android 开发人员也只有 ndk 开发者会接触到,汇编看似无用,但却是性能优化最底层的核心,了解汇编是程序员非必备,但是很需要的技能。本次推荐的博客是一个系列,在这个汇编中文博客很少的当下,这个系列可以说是很好的解决了大家入门困难的问题。本系列从环境搭建开始,到各种指令的介绍,把汇编基础用图片加代码整合起来,简单明了的讲解给大家,有需要汇编入门的同学可以仔细学习。

内推

重新开始更新「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 周报 #278 | 2024-02-26

26 Feb 02:12
Compare
Choose a tag to compare

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

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

新闻

App Store Connect upload requirement starts April 29

预计在 4 月 29 日,App Store Connect 就将限制必须使用 >= Xcode 15.0 进行提交,并支持最新的系统。还未升级的同学们需要尽快切换并进行适配啦。

🐢 Flutter 3.19.0 系列更新

@CrazyCoderShi: 国内新年假期期间 Flutter 团队发布了 2024 一季度的更新:Flutter 3.19.0 ;按照惯例随着一起发布的还有 Dart 3.3 ;此次更新除了功能迭代、性能调优、工具优化之外,有几个点值得开发同学们着重关注:

  • Gemini Dart SDK: 可以更方便地让 Dart 开发人员在 App 里集成 LLM 的 AI 能力
  • Impeller Android Preview: 意味着 Flutter 彻底抛弃 Skia 的进程迈出了很大一步
  • 弃用 Window 7 & 8,弃用 iOS 11 以前的版本
  • Dart 对于 JS interoperably 支持增强
  • Dart Macros 支持

其他相关博文:

文章

🐕 通过 Headphone Motion 访问 AirPods 的头部跟踪数据

@EyreFree:本文介绍了如何利用 Core Motion 框架访问 AirPods 的头部跟踪数据。介绍了在 iOS 应用中如何设置和获取用户授权,以及如何通过 CMHeadphoneMotionManager 类开始和停止设备运动数据更新,接收头部跟踪数据,并通过 CMDeviceMotion 类解析这些数据,最后说明了如何处理连接和断开耳机的事件。并且提供了完整 Demo 工程,推荐感兴趣的同学阅读。

🐕 On-device ML research with MLX and Swift

@JonyFang: Swift 编程语言因其易用性和高性能,配合 MLX 库,为 Apple 芯片上的机器学习研究提供了强大支持。MLX Swift 将 MLX 扩展到了 Swift 语言,简化了机器学习在 Apple 芯片上进行实验的复杂度,并提供了相应的 Swift API、高级的神经网络和优化器包,以及文本生成和 MNIST 训练的示例。所有这些都在 MIT 许可下发布,旨在利用 Swift 的高性能和易用性,为机器学习研究者提供一个友好的实验框架。文中提供了文档和示例,API 覆盖的能力可以具体看下文档,感兴趣可以研究下 Examples ~

🐕 Code Injection with Dyld Interposing

@Cooper Chen:众所周知 Objective-C 运行时的动态性可用于多种用途,例如我们熟知的 Method swizzling,然而 Method Swizzling 不能用于 C/C++ 函数的交换,这对于需要在 C/C++ 下进行逆向的时候并不能如人所愿,本篇文章介绍如何使用 dyld 动态绑定的特性进行插入方法,从而达到对 C/C++ 语言进行替换绑定的目的,同时也建议与 Fishhook 进行异同点比较来达到最佳的阅读体验。

🐎 The SwiftUI Field Guide

@zoeGuo:这个网站直观地解释了 SwiftUI 布局系统的工作原理。可以通过改变属性或参数数值动态看到布局上的变化,更有利于理解 SwiftUI 参数、属性的含义。 网站目前更新了 AlignmentHStackAspect RatioPadding 四个模块,推荐给正在学习 SwiftUI 的读者。

🐕 云音乐 RN 新架构升级之 iOS 灰度方案

@Smallfly:文章主要介绍了网易云音乐在升级 React Native(RN)架构时,iOS 侧采用的灰度方案。阐述了实现渐进式升级的思路和挑战,包括静态链接和动态链接两种方案的优缺点,以及他们最终采用的双动态库方案。这个方案通过引入一个中间层(NEReactNative)来解决静态链接过程中的符号引用问题,并在运行时动态加载新旧版本的 RN 代码。

文章适合对 React Native 架构升级、iOS 灰度发布策略、以及 Objective-C 运行时特性感兴趣的资深 iOS 开发者阅读。

代码

armhf-swift-toolchain

@kemchenj

  1. 可以学习如何使用源码编译 Swift
  2. 学习如何使用 SPM 进行交叉编译
  3. 对嵌入式 32 位 Linux 平台,可以使用 Swift 编码。例如作者已在 fpga 上运行 Swift Run Swift On Zynq petalinux

由:CmST0us 自荐

内推

重新开始更新「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 周报 #277 | 2024-01-29

29 Jan 02:16
Compare
Choose a tag to compare

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

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

新闻

Update on apps distributed in the European Union

@老驴:iOS 17.4 beta 上周上线了,其中最大的变化是因为欧盟 DMA 政策,苹果在欧盟再次做出重大让步,做出了 “违背祖宗” 的决定。 具体来说,有几个重大变化:

  1. 第三方应用商店:在欧盟,苹果将允许 App 通过第三方商店进行分发.
  2. Webkit 外的浏览器内核:长期以来,苹果限制 iOS 上的第三方浏览器必须使用 Webkit 内核,从 17.4 开始,这会在欧盟成为过去式。
  3. NFC API 和支付的开放:欧盟开发者有更多的 NFC 相关的 API,包括很多人期待的模拟 NFC 卡。
  4. App Store 多种支付方式:App Store 将不再限制支付方式.

这里面其实有很多改变是很多人一直期盼但是却一直不得的。这些改变将让 iOS 在欧盟成为更开放的移动操作系统。当然,仅限欧盟,目前还不知道其他地区的用户是不是可以模拟成欧盟用户,但是按照传统,应该不容易。

PS:工信部是不是该出手了?!

Apple introduces new options worldwide for streaming game services and apps that provide access to mini apps and games

苹果放开了对于串流 APP 的限制,利好 Xbox Cloud Gaming / Nvidia GeForce NOW 上架单独的串流 APP ;同时苹果对于 mini-games / mini-apps / chatbots 类型的应用开放 iAP 内购渠道,相较之前的态度还是略有放宽,也可能是顺应 GPT Shore 的潮流。

同时苹果为开发者准备了 50 多个新的的可视化图表以及分析报告,可以查看 用户的参与度,下载销售相关的收益,安装卸载程序时的附加信息等。同时这些信息预计在 3 月上线,届时还可以通过 API 向第三方授权这些分析报告。

文章

🐎 A new access modifier in Swift: package

@AidenRao:在 Swift 5.9 中,苹果引入了一个新的访问级别:package,在软件包内的模块之间共享代码,同时不将该代码分享给软件包外部。目前 package 只支持源代码构建的软件包,对于二进制框架有望在未来支持。

🐢 Exploring object file formats

@含笑饮砒霜:这篇文章的主要内容是关于目标文件格式的探讨。作者从自己在 LLVM 项目中的经历出发,深入研究了 lld 和二进制实用程序,并在此过程中对目标文件格式产生了浓厚的兴趣。文章介绍了目标文件格式的核心组件,如符号、节和重定位,并回顾了几种主要目标文件格式的历史和演变。通过了解不同格式的特点和限制,可以更好地理解它们在软件开发和部署中的作用。

内推

重新开始更新「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 周报 #276 | 2024-01-22

22 Jan 02:11
Compare
Choose a tag to compare

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

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

新手推荐

🐕 Bad practice: using "YYYY" to format a Date

@极速男孩:文章讲述了在 Swift 编程语言中关于日期格式化的一个常见错误。"YYYY" 实际上表示的是该周开始的年份,这会导致新年初几天的日期显示不正确。例如,2023 年 1 月 1 日会错误地显示为 2022 年。这个错误通常在新年开始时才被注意到。正确的年份格式化方法应该使用 "yyyy" ,以确保准确表示日历年份​​。

文章

🐕 在微信小程序里运行完整的 Flutter,我们是怎么做到的?

@邦 Ben:MPFlutter 是一个跨平台 Flutter 开发框架,可用于各种小程序、H5、原生应用开发。这类跨平台开发,在一些中小型的开发场景来说,可以提高比较大的效率。本文主要介绍一下在微信小程序上实现的原理,通过裁剪 Skia 生成符合微信小程序分包要求的 CanvasKit,使用 Flutter Web + W3C BOM + WebGL Canvas 跑通渲染流程,通过字体内置、智能分包的方式很好地解决了微信包体积限制。选型的过程也有介绍,有兴趣的同学可以仔细看看,也可以基于官网流程体验尝试。

参考链接:官网

🐢 Swift for C++ Practitioners, Part 1: Intro & Value Types

@AidenRao:这个系列主要是通过将 C++ 的习惯用法、模式和思维模型映射到 Swift 中来帮助 C++ 开发学习和使用 Swift。如果你是一位 C++ 背景的开发,阅读 Swift 入门指南 中有比较多的困惑,那可以尝试一下该系列,能帮助你更好的理解和应用 Swift。

🐕 VisionPro News && Q&A: Building apps for visionOS

@EyreFree:在这两篇文章中,Apple 专家回答了关于 visionOS 的常见问题,涵盖了如何与实体互动、选择窗口组或沉浸式空间、可视化碰撞形状、在沉浸式空间中定位 SwiftUI 视图、编程定位窗口、用户关注点追踪、onHover 和 onContinuousHover 动作、自定义沉浸式环境纹理、视频格式转换、RealityKit 照明和材料自定义等方面。介绍了 Apple Vision Pro 的 App Store,Algoriddim 公司为 visionOS 设计的适应无限画布的 App djay,以及 Apple Vision Pro 工程师的常见问题解答。文章还提及了重塑企业应用、提供开发实验室和 App Review 咨询服务,以及 visionOS 的示例应用、SwiftUI 教程和音频性能更新资源。

🐎 AnyView ’ s impact on SwiftUI performance

@东坡肘子:本文探讨了在 SwiftUI 中使用 AnyView 对性能可能造成的影响。AnyView 作为一种类型擦除视图,使得开发者无需明确指定视图层次结构中各个视图的具体类型,从而简化了代码的复杂度,避免了泛型的频繁使用。然而,这种方便性可能以牺牲性能为代价。

作者 Martin Mitrevski 通过精心设计的测试代码,直观地展示了 AnyView 在 SwiftUI 中所造成的性能影响。文章特别指出,在包含大量子视图的滚动列表等场景中,应谨慎使用 AnyView,以避免不必要的性能下降。

介绍摘自 Fatbobman's Swift Weekly,推荐订阅!

🐎 闲话 APPLE 的 APP REVIEW 趣事

@Smallfly:这篇文章探讨了一些 iOS App Review Team 内部的运作机制,展示了 App 常见的拒审原因,并为审核申述提供了一些思路,推荐给提交 App Store 审核遇到问题的开发者阅读。

🐎 std:: versus ::std::

@老驴:最近一段时间原生鸿蒙开发的热度在升温,而开发原生鸿蒙主要用 C++,而 C++ 这么多年下来也一直热度不减。C++ 开发中,作用域这个概念一直对新手不是很友好,尤其是怎么理解在什么情况下用哪种作用域。这篇文章就可以很好的帮你理解作用域这个概念。

内推

重新开始更新「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 周报 #275 | 2024-01-15

15 Jan 02:12
Compare
Choose a tag to compare

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

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

文章

🐕 @Observable Macro performance increase over ObservableObject

@Barney:这篇文章主要介绍 WWDC 2023 中首次公开的 @observable 宏,这是一个设计精良的工具,旨在优化 SwiftUI 视图并提升应用性能。通过使用 @observable 我们能有效地防止不必要的视图重绘 , 并更流畅地观察状态变化。尽管使用 @observable 宏让我们无需再使用 @ObservedObject,ObservableObject 和 @published,但为了确立模型数据来源仍需依赖 @State

🐎 Perception: A back-port of @Observable

@Smallfly:Swift 5.9 引入了强大的观察者工具 @observable 宏,但仅适用于 iOS 17、macOS 14、tvOS 17、watchOS 10 等新平台。由于少于 50% 的设备运行在 iOS 17 上,大多数开发者需要等待数年才能使用这些工具。swift-perception 提供了在低版本中使用 @observer 的能力,并且在高于 iOS 17 上会自动使用系统的实现。有需要的读者可以一试。

🐕 Adapting your App Icon to visionOS

@享耳先森:Apple Vision Pro 即将发售,如果你的 App 准备适配 visionOS,本文介绍了如何将现有的 App Icon 进行修改已完美匹配 visionOS 规范。

🐢 iOS Availability 编译器实现机制解析

@JonyFang: 文章探讨了 iOS 开发中的 Availability 机制,这是 iOS 编译器提供的一个用于处理不同 iOS 系统版本之间 API 兼容性问题的功能。该机制允许开发人员声明 API 的版本约束,并进行可用性检查来防止在旧版 iOS 系统上调用不存在的新 API,从而避免应用崩溃。然而,作者通过研究 Clang 和 Swift 编译器源码指出,Availability 的检查只局限于方法内部的直接调用,不能保证完全的运行时安全性。

🐕 Encrypted Portals between Macs – built in Swift and Rust

@水水:Portals 是一款 Swift 开发的 Mac 应用程序。它使用 Ockam Rust 库在 Mac 上与任何人、任何地方私下共享服务。该服务通过端到端加密的 Ockam 门户进行安全共享。你的朋友将可以在他们的本地主机上访问它!

代码

🐎 Missing compiler warning

@Cooper Chen:在 Swift 中,当 override 函数 / 方法具有相同名称但有更多参数,并且这些参数获得默认值时,理论上编译器会对这样的写法产生一个 waring,但是实际开发中并没有出现预期的警告,这个 issue 解释了以上行为的 root cause,并且提出可以使用 let _ = Printable.init(from:as:)("Sebastian") 这样的写法,同时也可以对 init 方法增加 @_disfavoredOverload 关键字的写法,但需要提醒的是,并不推荐这样的用法,但这为有类似 case 的开发者提供很好的思路。

内推

重新开始更新「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 周报 #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)