likes
comments
collection
share

老司机 iOS 周报 #219 | 2022-10-17

作者站长头像
站长
· 阅读数 4

老司机 iOS 周报 #219 | 2022-10-17 老司机 iOS 周报,只为你呈现有价值的信息。

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

 Developer - 设计开发加速器

Apple 面向开发者推出 Ask Apple

老司机 iOS 周报 #219 | 2022-10-17

Apple 宣布推出 Ask Apple,这是一项全新的互动式 Q & A 和一对一咨询(Office Hour)系列活动,为开发者提供更多机会与 Apple 专家直接交流沟通,获取洞见、支持与反馈。

开发者需要加入 Developer 计划,并且下载 Slack 参与交流互动(与 WWDC22 的 Digital Lounges 模式相似,当时参与过的同学应该对讨论中的丰富信息记忆犹新)。欢迎大家注册参加 Q & A 的大量话题讨论,例如灵动岛、SwiftUI、新平台和硬件的体验优化等。

同时还有中文开发者的 Office Hour 专场(共 4 场),时间也充分考虑到了国内开发者。

  • 咨询设计布道团队(大中华区)
    • 10 月 21 日上午 10:00 - 12:00
    • 10 月 21 日下午 14:00 - 16:00
  • 咨询技术布道团队(大中华区)
    • 10 月 21 日上午 10:00 - 12:00
    • 10 月 21 日下午 14:00 - 16:00

新手推荐

🐎 Dynamic Island (and Live Activities): Quick start tutorial

@极速男孩:苹果在 Xcode 14.1 Beta 中带来了灵动岛的相关 API ,本文主要介绍了如何简单的利用新的 Live Activities 的 API 来创建一个自己的灵动岛。

文章

🐕 CPU 是如何与内存交互的

@老驴:今年上半年 M1 Pro/Max/Ultra 在 GPU 上实际表现没有达成预期之后引发了很多人对 M1 系列芯片的进一步探究,后来 TLB 容量不足的问题也被发现。那什么是 TLB?CPU 又是如何去映射内存的?本文就从当今主流 CPU 架构出发,科普当今的 CPU 是如何管理使用 L1/2/3 缓存和内存的。

🐕 Apple’s use of Swift and SwiftUI in iOS 16

@含笑饮砒霜:iOS 16 刚刚发布,本文分析了苹果内置的应用程序使用 Objective-C、Swift、SwiftUI 以及 C 和 C++ 的占比。通过对比 iPhone OS 1 到 iOS 16 的各个系统,可以得出一些结论:

  • Objective-C 是 iOS 的核心,被大多数应用程序直接或间接使用
  • Swift 的使用在过去的 iOS 版本中迅速增加。今年 Swift 终于超越了 C++
  • 多年来C++的使用稳定
  • SwiftUI 开始引人注目,这是一个很好的迹象
  • C正在缓慢但肯定地消失

🐕 一文让你理清 PrimaryScrollController

@CrazyCoderShi: 对苹果用户来说,大家基本都知道,iOS 手机应用有一个比较常见的功能:点击状态栏,列表就会滚动到顶部. 但是在 Flutter 的各种列表组件中并未带有该特性,本文教大家如何使用 PrimaryScrollController 来实现这一特性.

Where View.task gets its main-actor isolation from

@Damien: Swift 5.5 引入了 async/await 特性,苹果也为 SwiftUI 添加了 task 视图修饰器,以方便开发者在视图中使用基于 async/await 的异步代码,但是你知道 task 是如何获取自己所执行的线程吗?以及它和 MainActor 修饰词有什么关系?如果感兴趣不妨一读。

🐕 Xcode 14.0 generates wrong concurrency code for macOS targets

@Cooper:Mac 开发者在 Xcode 14.0 和 14.0.1 进行构建工程的时候可能会出现并发错误(concurrency bugs),因为 Swift 5.7 编译器在针对 macOS 12.3 SDK 时会生成无效代码。解决方案是在 Xcode 14.1 发布之前,使用 Xcode 13.4.1 构建工程。产生错误的原因如下:

  • 因为实现了 SE-0338 ,Swift 5.7 编译器的执行器跳跃点(executor hops)与 Swift 5.6 不同
  • Swift 5.7 新增非官方属性 @_unsafeInheritExecutor,用于注释一些需要退出新规则的标准库函数,当编译器编译到该属性时,它会生成不同的执行器跃点
  • 产生编译错误的原因是在 Mac 开发中,Xcode14 使用了 Swift 5.7 的编译器和 Swift 5.6 的标准库,后者不包含 @_unsafeInheritExecutor 属性
  • Xcode14.1 和 macOS 13 SDK 发布后将会修复这个问题

🐢 基于自建 VTree 的全链路埋点方案

@Barney: 本文详细介绍了网易云音乐技术团队自研的一套全链路埋点方案,从埋点设计、到客户端三端(iOSAndroidH5)开发、以及埋点校验&稽查、再到埋点数据使用。从设计到背后的思考和上线实践都有详细的说明,适合仔细阅读思考。

🐢 虚拟内存 & I/O & 零拷贝

@老峰:内存管理也是操作系统的核心功能之一,本文主要讲解了 Linux 系统下内存管理技术,是一篇不错的科普文,主要包含以下四部分:

  • 虚拟内存: 地址翻译、高速缓存、加速翻译&优化页表
  • 内核空间 & 用户空间:内核态与用户态
  • IO:(同步)阻塞 IO、(同步)非阻塞 IO、IO 多路复用、网络 IO 模型、异步 IO
  • 零拷贝:传统 IO 流程、mmap + write、写时复制

工具

🐕 妙言 - 更适合工程师用的 markdown 笔记应用

@水水:一个简洁好看的开源的 Mac Markdown 编辑器,没有任何多余的功能。使用原生 Swift 开发,轻量性能高,安全纯本地使用,具备语法高亮、黑暗模式、自动格式化、单独编辑、演示模式、图床等功能。也可以做为备忘录、归档使用,我个人还是比较喜欢的。

代码

Semaphore

@SmallflySemaphore 是一种信号量管理类,它和 DispatchSemaphore 区别是不会阻塞线程,而是在 Swift Concurrency 框架下提供更细颗粒度的资源管理能力,例如支持对 Task 的挂起和恢复等。

响应式编程 Demo - RxStudy、GetXStudy

@JonyFang: RxStudyGetXStudy 分别是基于 RxSwift/RxCocoa、GetX 框架的 Demo,可以结合两个项目,对比编程思路。

package-benchmark

@xuyafei:package-benchmark 是一种用于轻松创建 “macOS 和 Linux 的 Swift 性能测试报告” 的工具。它既适用于主要关注运行时的临时小型代码片段(本着 Google swift-benchmark 的精神),也适用于更广泛的指标,例如内存分配、系统调用、线程使用等。

package-benchmark 支持本地使用和基准比较,用于单个开发人员的迭代工作流,但更重要的是,它很好地支持 GitHub CI 的集成。其提供的示例工作流用于在主分支和 PR 分支之间进行自动比较,以支持 PR 的强制性能验证(具有可定制的阈值),这也是该工具的主要预期用例。

摸鱼周报

@摸鱼周报 #70:第 70 期摸鱼周报,一起来看下本期概要:

  • 本期话题:苹果 iOS / iPadOS 16.1 公测版 Beta 3 发布,为老款 iPad 支持台前调度
  • 本周学习:排查修复 App Store 上架项目闪退问题
  • 内容推荐:iOS 开发技巧及计算机基础内容学习
  • 摸一下鱼:计算麦当劳套餐卡路里的营养计算器,可以模拟木鱼声音的软件,以及插图绘制软件

@摸鱼周报 #71:第 71 期摸鱼周报,一起来看下本期概要:

  • 本期话题:十月份还有 One More Thing?Apple 新增 QA 活动;Swift 和 SwiftUI 在 iOS 系统中的使用情况。
  • 本周学习:在 iOS 16 中更改文本编辑器背景;解决 Cocoapods 导致的 Showing Recent Messages 问题
  • 内容推荐:SwiftUI 好文推荐
  • 摸一下鱼:推荐一款图片在线处理网站以及老地图查询网站;供摸鱼的迷宫生成器。

关注我们

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

同时也支持了 RSS 订阅:github.com/SwiftOldDri…

说明

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

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