Swift 周报 第十五期

前言

本期是 Swift 编辑组自主整理周报的第六期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。

欢迎投稿或推荐内容。目前计划每两周周一发布,欢迎志同道合的朋友一起加入周报整理。

果然,十一假期与新一轮疫情撞了个满怀,远方的你还好吗?Swift社区愿与你携手,一起尖叫一起笑,一起撑伞一起闹!👊👊👊

周报精选

新闻和社区:iPhone14 车祸检测功能摆乌龙 坐过山车自动报警

提案:申请将 sleep(for:) 添加到 Clock

Swift 论坛:Bug @availableliteral 初始化中没有效果

推荐博文:async/await 系列代码示例详解

话题讨论: 面对各厂新一轮裁员,你焦虑了吗?

新闻和社区

Apple Entrepreneur Camp 现已开放申请

Apple Entrepreneur Camp 旨在为 App 驱动型组织中的少数群体创业者及开发者提供支持,助力其研发新一代的前沿 App 并开拓全球网络,鼓励这些创业者在技术领域不断探索并取得持续发展。

三组面向女性、黑人以及西班牙裔及拉丁裔创业者的在线课程将在 2023 年 1 月开展,欢迎选择合适的一组提交申请。课程期间,Apple 工程师将为学员提供编程指导,Apple 高层也将作为导师分享见解、启发灵感。申请截止日期为 2022 年 12 月 5 日。

iPhone14 车祸检测功能摆乌龙 坐过山车自动报警

据美国有线电视新闻网等多家媒体报道,近日有游客在携带苹果公司的新款手机 iPhone14 乘坐过山车时,手机会错误检测到遭遇车祸并自动报警。目前在美国游乐园,已发生多起类似事件,而造成这一切的原因是 iPhone14 自带的车祸检测功能存在问题。

苹果在9月初发布了新款手机 iPhone14,其中一项“车祸检测”新功能颇为引人关注。该功能借助加速度传感器、陀螺仪、麦克风等多种传感器来感知四种碰撞场景,包括正面、侧面、追尾和翻车。一旦检测到车祸,系统会自动弹窗询问机主是否遭遇了紧急情况,在一定时间内若未收到回应,系统将自动报警。

不过,设计人员可能没有考虑到,乘坐过山车与汽车行驶状态容易混淆。据了解,iPhone14 上市以来,在美国多家游乐园的过山车上,都发生过报警乌龙。有的游乐园无奈之下只能提醒游客,坐过山车之前关闭车祸检测功能,或把手机调成飞行模式。(看看新闻Knews)

苹果自研 5G 芯片或要等 2025 年

此前爆料称,苹果将为未来的 iPhone 开发自主研发的 5G 基带芯片,但据预测,高通仍将是所有 iPhone 15 和 iPhone 16 系列机型的调制解调器供应商,这表明苹果的基带芯片至少要到 2025 年才会亮相。

海通国际证券分析师 Jeff Pu 在周五的研究报告中说,他预计 2024 年发布的 iPhone 机型(暂称 iPhone 16 系列)将使用高通尚未公布的骁龙 X75 调制解调器。与骁龙 X70 一样,X75 预计将基于台积电的 4nm 工艺制造,有助于提高能效。(IT之家)

欧盟批准强制苹果使用 USB C 接口

【欧盟将统一便携智能设备充电接口】据@央视新闻 ,欧洲议会 10 月 4 日通过一项新规,要求从 2024 年底开始,所有手机、平板电脑等便携智能设备新机都使用 USB Type-C 的充电接口。

欧洲议会当天以 602 票赞成、13 票反对的投票结果通过有关统一便携智能设备充电接口的法案。所有手机、平板电脑、数码相机、耳机、便携音箱、手持视频游戏机、电子阅读器、键盘、鼠标和便携式导航系统将在两年内统一充电接口。

提案

正在审查的提案

SE-0375 允许非可选非空参数传递给可选类型的参数 提案正在审查。

SE-0352 提案中有一个限制,可选类型的参数不允许接受非可选参数。本提案申请更改这个限制,当非可选非空参数传递给可选类型的参数时,允许调用成功。示例代码如下:

func acceptOptional<T: P>(_ x: T?) { }
func test(p: any P, pOpt: (any P)?) {
  acceptOptional(p) // SE-0352 does not open "p"; this proposal will open "p" and bind "T" to its underlying type
  acceptOptional(pOpt) // does not open "pOpt", because there is no "T" to bind to when "pOpt" is "nil"
}

SE-0374 sleep(for:) 添加到 Clock 提案正在审查。

Swift 5.7 中引入的 Clock 协议提供了一种方法来暂停到未来的某个时刻,但没有提供一种方法来休眠一段时间。这与 Task 上的静态 sleep 方法不同,后者提供了一种方法来休眠到某一时刻或一段时间。

SE-0373 取消 result builders 中对变量的所有限制 提案正在审查。

result builders 转换的实现(由 SE-0289 引入)对转换函数中的局部变量声明设置了许多限制。具体来说,局部变量需要有一个初始化表达式,它们不能被计算,它们不能有观察者,它们不能有附加的属性包装器。这些限制在 SE-0289 提案中都没有明确说明,但它们实际上是当前功能的一部分。

Swift论坛

  1. 讨论苹果是否应该创造一个简单编程语言

  2. Bug @available 在 literal 初始化中没有效果

struct Foo {
    let bar: String
}

@available(*, deprecated)
extension Foo: ExpressibleByStringLiteral {
    init(stringLiteral value: StringLiteralType) {
        self.bar = value
    }
}

let a: Foo = Foo(stringLiteral: "") // warning: 'init(stringLiteral:)' is deprecated
let b: Foo = "" // no warning
  1. 讨论重新考虑基于 property wrappers 的全局 actor 推断
    内容概括:

  2. 提问拆分我的信息元素

// Foo.swift
//
class Foo {
    var x : Int;

    init ();
    init (v: Int);

    func bar () -> Int;
    func bar (u:Int, v:Int) -> Int;
}

extension Foo {
    init () {
        ...
    }

    init (v: Int) {
        ...
    }
}

extension Foo {
    func bar () -> Int {
        ...
    }

    func bar (u:Int, v:Int) -> Int {
        ...
    }
}

解决使用 convenience 初始化方法, designated 初始化方法必须写在 class 的主体中但 convenience 初始化方法可以在 extension 中使用。

class Foo {
    var x: Int

    // Note that this is a designated init because it doesn't have the
    // `convenience` keyword.
    init() {
        x = 0
    }
}

extension Foo {
    convenience init(v: Int) {
        self.init()
        x = v
    }
}

extension Foo {
    func bar() -> Int {
        return x
    }

    func bar(u:Int, v:Int) -> Int {
        return x + u + v
    }
}
  1. 讨论 iPhone 拍照和激光雷达数据采集

  2. 讨论使用 @MainActor 确保在主线程上执行

  3. 讨论 switch 语句的替代方法

  4. 讨论累积 HTTP 请求 body 部分:存储 ByteBuffer 是个好主意吗?

推荐博文

Sendable 和 @Sendable 闭包 —— 代码实例详解

摘要: Sendable 和 @Sendable 是 Swift 5.5 中的并发修改的一部分,解决了结构化的并发结构体和执行者消息之间传递的类型检查的挑战性问题。

Swift 中的 async/await —— 代码实例详解

摘要: async-await 是在 WWDC 2021 期间的 Swift 5.5 中的结构化并发变化的一部分。Swift中的并发性意味着允许多段代码同时运行。这是一个非常简化的描述,但它应该让你知道 Swift 中的并发性对你的应用程序的性能是多么重要。有了新的 async 方法和 await 语句,我们可以定义方法来进行异步工作。

Swift AsyncSequence —— 代码实例详解

摘要: AsyncSequence 是并发性框架和 SE-298 提案的一部分。它的名字意味着它是一个提供异步、顺序和迭代访问其元素的类型。换句话说:它是我们在 Swift 中熟悉的常规序列的一个异步变体。

Swift AsyncThrowingStream 和 AsyncStream ——— 代码实例详解

摘要: AsyncThrowingStreamAsyncStream是 Swift 5.5 中由 SE-314 引入的并发框架的一部分。异步流允许你替换基于闭包或 Combine 发布器的现有代码。

Swift 中的 MainActor 使用和主线程调度

摘要: MainActor 是 Swift 5.5 中引入的一个新属性,它是一个全局 actor,提供一个在主线程上执行任务的执行器。在构建应用程序时,在主线程上执行UI更新任务是很重要的,在使用几个后台线程时,这有时会很有挑战性。使用 @MainActor 属性将帮助你确保你的UI总是在主线程上更新。

话题讨论

面对各厂新一轮裁员,你焦虑了吗?

关于我们

Swift社区是由 Swift 爱好者共同维护的公益组织,我们会分享以 Swift实战SwiftUlSwift基础为核心的技术内容,也整理收集优秀的学习资料。

特别感谢 Swift社区 编辑部的每一位编辑,感谢大家的辛苦付出,为 Swift社区 提供优质内容,为 Swift 语言的发展贡献自己的力量。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容

  • 前言 本期是 Swift 编辑组自主整理周报的第三期,每个模块还在调整磨合期。各位读者如果有好的提议,欢迎在文末留...
    Swift社区阅读 320评论 0 3
  • 前言 本期是 Swift 编辑组自主整理周报的第四期,每个模块还在调整磨合期。各位读者如果有好的提议,欢迎在文末留...
    Swift社区阅读 219评论 0 1
  • 前言 本期是 Swift 编辑组自主整理周报的第五期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。...
    Swift社区阅读 527评论 0 3
  • 前言 前几期周报内容是同步翻译的英文版周报,目前英文版停更,周报停滞半年多。经过多次讨论,我们决定重启周报,分模块...
    Swift社区阅读 466评论 0 9
  • 前言 非常感谢大家抽出生命中宝贵的一段时间来听我接下来的一大段关于写文章那些事的唠叨。写文章的好处看看《觉醒年代》...
    星光社的戴铭阅读 1,160评论 2 7