老司机 iOS 周报 #220 | 2022-10-24
老司机 iOS 周报,只为你出现有价值的信息。

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

文章

A Possible Vision for Macros in Swift

@kemchenj:前一段时刻 Swift 团队决定将编译器的 Parser 改为运用 Swift 实现,而且将这一部分功用内置到 SwiftSyntax 里。

这意味着 Swift 成为了语法 API 的一等公民,我们可以很快捷地在 Swift 代码里里拜访和修正本身(源代码),更进一步地说,我们可以通过代码去编写代码。

假如把这个功用集成到编译器和语法里,就成了我们熟知的宏 (macro)。趁着这个机遇,Swift 团队考虑了后续怎样借助这套 API,供应宏的实现,而且共享了开始的规划思路到论坛里,期望我们可以一同参加评论。

以往许多硬编码在编译器里的功用都可以改为通过宏体系进行实现,例如 Equatable/Hashable 的实现自动合成等等:

extension Equatable {
  macro func ==(lhs: Self, rhs: Self) -> Bool
}

Which Collection?

@Smallfly:集结(Collection)是编程言语常用的类型,Swift 集结是值类型的,关于凌乱的集结数据,频频拷贝可能会带来功能问题。本文通过一个数独算法,介绍怎样对数组做优化,主要利用了 some 关键字配合 Swift 5.7 协议支撑相关类型的新特性实现。想了解更多请参阅 SE-0346。

Xcode 中运用 SPM 和 Build Configuration 的一些坑

@红纸:经喵神的相关测验发现,在 Xcode 中运用 SPM 的包编译时将参照 Build Configuration 的名字,自动选择运用 DEBUG 仍是 RELEASE 形式来编译,这将导致编译宏、编译配置等一系列因素影响最终的二进制产物。

规则:若名字里包含有 Debug 或许 Development(不区别大小写)则选择 DEBUG 形式,反之则选择 RELEASE 形式。

iOS 灵动岛开发实践

@anotheren:灵动岛是 Apple 为 iPhone 14 Pro 系列带来的下一代交互体会。在 iOS 16.1 中,相关 API 已向开发者开放,并仅供应了 SwiftUI 版别的接口。本文从电商视点,带来了灵动岛开发的入门实践。但是并非全部功用都适合在灵动岛上展示,举荐核对 Apple 的人机交互规划指南中的 Live Activities 部分。

Swift Concurrency – Things They Don’t Tell You

@Cooper Chen:Swift Concurrency 供应了一种非常好的编写异步代码的方法,一同它也被宣传为运用安全。但是不幸的是 Swift Concurrency 编程有许多陷阱,而且编译器不会查看全部东西

  • 假如运用 async 关键字,确保在后台线程上调用,否则需求添加 @MainActor 特点
  • Swift Actor 不能保证在运用过程中防止数据竞赛,不保证异步方法在调用另一个方法之前会被完全处理
  • 防止将锁和信号量等经典的同步方法与 Swift Concurrency 混合运用
  • 设置 Task 优先级,防止在单个队列上分配全部内容
  • 防止在 Task 中进行深重的同步作业,例如当需求像图画处理这样的深重作业时,请运用自定义 DispatchQueue
  • 必要时请运用 await Task.yield() 容许更频频地切换使命

代码

灵动岛开发示例代码

@anotheren:这是一份灵动岛开发的示例代码,包含了多个实例的展示,你可以结合上面灵动岛开发实践一同食用更佳。

音视频

Swift 视频教程 ChaoCode

@EyreFree:Swift 视频教程 ChaoCode 从 油管 入驻 B 站,从基础的 Swift 语法到中级 Swift 内容、 SwiftUI、用 Swift 制造无缺 App 等都有,比较适合入门学习 Swift,感兴趣的朋友可以注重。

由 KeithBird 举荐

摸鱼周报

@摸鱼周报 #72:第 72 期摸鱼周报来了,一同来看下本期概要:

  • 本期论题:1024 程序员节在各个技术网站现已开始预热,有不少奖品可以捞一捞;App Store 现已开放 iOS 16.1 和 iPadOS 16.1 App 提交
  • 本周学习:当设置 UIImageView 高亮时,会暂停当时的动画;Xcode 14 编译包在 iOS 12.2 以下设备溃散的解决方案
  • 内容举荐:灵动岛有许多玩法还待探究,本期举荐一些相关文章
  • 摸一下鱼:CleverToolKit:iOS 开发者辅助东西,页面简洁,体积细巧。现在包含 json2model 功用。

注重我们

我们是「老司机技术周报」,一个继续寻求精品 iOS 内容的技术群众号,欢迎注重。

注重有礼,注重【老司机技术周报】,回复「2021」,收取 2017/2018/2019/2020 内参

一同也支撑了 RSS 订阅:github.com/SwiftOldDri… 。

说明

标明需某东西, 标明修改举荐

估计阅览时刻: 很快就能读完(1 – 10 mins); 中等 (10 – 20 mins); 慢(20+ mins)