Swift 周报 第四十三期

+ [推荐博文](#_210)
+ [话题讨论](#_236)
+ [关于我们](#_247)

前言

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

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

命是弱者的借口,运是强者的谦辞,辉煌与否?且看Swift社区强中意!👊👊👊

周报精选

新闻和社区:iPhone 破发促销、印度市场寻增量,苹果再攀 3 万亿美元高点

提案:函数体 Macros 提案正在审查中

Swift 论坛:Swift 中引入函数体宏

推荐博文:在 SwiftUI 中实战使用 MapKit API

话题讨论:

你是更能接受同性上司还是更能接受异性上司?

上期话题结果

投票结果反映,大多数开发者还是比较担心自己的头发,另外就是身体变胖。久坐缺乏运动会导致一系列的身体健康问题。建议大家抽时间多运动,避免久坐。

新闻和社区

关于 App Store 提交的隐私更新

2023 年 12 月 7 日,第三方 SDK 隐私清单和签名。 第三方软件开发工具包 (SDK) 能够为 App 提供强大的功能,同时也可能会影响用户隐私,而这些影响可能对开发者和用户来说并不明显。请注意,当你将第三方 SDK 与你的 App 搭配使用时,你需要对 App 中使用的相应 SDK 包含的所有代码负责,并且需要了解 SDK 的数据收集和使用实践。

在 WWDC23 (简体中文字幕) 上,我们宣布了新的 SDK 隐私清单和签名,以帮助 App 开发者更好地了解第三方 SDK 如何使用数据、保护软件依赖项并为用户提供额外的隐私保护。从 2024 年春季开始,如果你提交的新 App 或 App 更新添加了 App Store 上的 App 中常用的第三方 SDK,那么你需要包含相应 SDK 的隐私清单。将 SDK 用作二进制文件依赖项时,也需要包含签名。此功能对于所有 App 来说都是向前迈出的重要一步,我们鼓励所有 SDK 采用这项功能,以更好地支持依赖于相应 SDK 的 App。

需要声明原因的 API 的新用例。 如果你上传到 App Store Connect 的新 App 或 App 更新使用了需要声明原因的 API (包括第三方 SDK 使用的 API),而你没有在 App 的隐私清单中提供批准的原因,那么你会收到通知。根据我们收到的开发者反馈,批准的原因列表已扩展到包含更多用例。如果你的用例可让用户直接受益,但未在现有批准原因列表中,请提交请求 (英文) 以便我们添加新的原因。

从 2024 年春季开始,若要将新 App 或 App 更新上传到 App Store Connect,你需要在 App 的隐私清单中注明批准的原因,以准确反映你的 App 如何使用相应 API。

iPhone 破发促销、印度市场寻增量,苹果再攀 3 万亿美元高点

作为全球科技公司的标杆,苹果公司的市值在今年 8 月初创下了新高,突破了 3 万亿美元的大关。不过,由于手机、PC 等市场的波动,加上外部多种因素的影响,近几月的时间,苹果公司的股价起起伏伏,市场也都在等待苹果何时能够再次站上 3 万亿美元的高点。

四个月的等待后,这一节点被定格在了美国当地时间 12 月 5 日。截至美股当日收盘,苹果公司股价报收于 193.42 美元,上涨 2.11% ,总市值达 3.01 万亿美元。

临近 2023 年年底,苹果公司股价 3 万亿美元的再次冲关,也算是给过去起伏的一年收了个尾。回望过去的一年,作为贡献出近一半收入的产品,iPhone 也未能幸免于整个大环境的下滑。为了提振销量,渠道商不得不降价促销,而新品开售破发加速、华为 5G 的回归更是给了苹果重重一击。

不过,依然需要指出的是,在绝大部分手机品牌亏本做买卖的同时,苹果公司则是赚走了全球超 8 成的利润。另外,印度市场的崛起,也让苹果公司找到了新增量。

Counterpoint 高级分析师 Ivan Lam 对钛媒体 App 表示,“印度俨然已经成为了人口第一大国,而且出生率还不错,年轻群体庞大且消费活跃。对于苹果来说,是未来十年的一个重要潜力市场。”

假日将至,请为你的 App 做好准备

App Store 最繁忙的季节即将到来!确保及时更新你的 App 和游戏,并在岁末假日到来之前做好准备。整个假日季期间同样会开放 App 提交,我们非常期待看到你提交的 App。平均而言,90% 的提交内容会在 24 小时内得到审核。但请注意,在 12 月 22 日至 27 日,完成审核所需的时间可能略长一些。

提案

通过的提案

SE-0411 隔离的默认值表达式 提案通过审查。该提案已在 四十期周报 正在审查的提案模块做了详细介绍。

正在审查的提案

SE-0414 基于区域的隔离 提案正在审查。

Swift Concurrency 将值分配给由 actor 和任务边界确定的隔离域。在不同隔离域中运行的代码可以并发执行,并且通过 Sendable 检查,防止非 Sendable 值跨越隔离边界传递,从而彻底消除对共享可变状态的并发访问。在实践中,这是一个重要的语义限制,因为它禁止了无数据竞争的自然编程模式。

在本文档中,我们提出通过引入一种新的控制流敏感的诊断来放宽这些规则,该诊断确定非 Sendable 值是否可以安全地在隔离边界上传递。通过引入隔离区域的概念,编译器可以保守地推断两个值是否可能相互影响。通过使用隔离区域,语言可以证明在将非 Sendable 值传递过隔离边界后,该值(以及可能引用它的任何其他值)在调用者中不会被使用,从而防止竞争的发生。

SE-0415 函数体 Macros 提案正在审查。

宏通过附加代码来增强 Swift 程序,其中包括新的声明、表达式和语句。目前,宏系统不支持可能希望增强代码的关键方式之一,即合成或更新函数的主体。可以创建具有自己函数主体的新函数,但不能为用户声明的函数提供、增强或替换函数主体。

该提案引入了函数体宏,确切地说:允许根据声明全面合成函数主体,以及通过更多功能增强现有函数主体。这为宏提供了许多新的用例,包括:

  • 根据函数声明和一些元数据(例如自动合成传递提供的参数的远程过程调用)全面合成函数主体。
  • 通过执行日志/跟踪、检查前置条件或建立不变量来增强函数主体。
  • 根据提供的实现替换函数主体。例如,将主体移入在其他地方执行的闭包中,或将主体视为宏“降低”为可执行代码的特定领域语言。

Swift论坛

  1. 提议SE-0415:函数体宏

内容概括

SE-0415 提议在 Swift 中引入函数体宏。 该提案的审核期截至 2023 年 12 月 20 日。该提案建议启用一项可通过带有 -enable-experimental-feature BodyMacros 标志的主干开发快照访问的功能。

审核过程鼓励反馈以改进提案。 它要求审阅者评估所解决问题的重要性、提案是否符合 Swift 的方向,并将其与其他语言或库中的类似功能(如果适用)进行比较。 Tony Allevato 作为审核经理负责监督此审核流程。

讨论的序言中提出的一个具体问题提到,所提议的宏可能无法有效地处理从函数体抛出的错误。 有人建议使用一种新的延迟块来捕获抛出的错误,从而允许访问块内的这些错误以进行处理。

所提出的语法示例演示了一个概念,其中 defer 块可能会捕获从函数体抛出的错误并执行报告错误和重新抛出错误等操作。

  1. 讨论枚举案例类型签名/插值

内容概括

讨论围绕获取具有关联值的枚举情况的字符串表示,特别是寻求一种为每种情况生成类型化签名或插值的方法。 一个示例枚举了具有关联值及其预期输出签名的各种情况。

当前的方法涉及使用反射,但由于反射元数据对应用程序二进制大小的影响,因此存在可能删除反射元数据的担忧。 另一种考虑的方法是使用宏,但这些可能不适用于较旧的操作系统版本,从而带来兼容性挑战。

该对话强调了与处理重复的枚举案例名称相关的编译器错误,该错误使枚举实例的唯一性变得复杂。

核心需求是为某些枚举案例的所有实例导出一个稳定的 hashValue,无论它们的关联值如何,旨在将具有相同案例名称但不同关联值的实例视为相同的存储目的。 然而,传统的 Hashable 实现不足以实现此目的。

一个探索的想法涉及利用 String(describing:) 生成枚举案例的字符串表示形式,但如果客户端为枚举实现 CustomStringConvertible,则这种方法可能会失败。 人们有兴趣了解如何调用枚举描述的默认 Swift 标准库实现,以解决 CustomStringConvertible 的客户端实现所产生的问题。

  1. 讨论~Copyable 类型中不可用的 deinit

内容概括

讨论围绕着 ~Copyable 类型中不存在不可用的 deinit 以及它对程序员构建代码以与本地数据流分析保持一致的依赖展开。

不可破坏类型的概念旨在增强本地数据流分析并提供编译时保证。 它类似于函数的想法,从技术上讲,函数承诺返回一些东西,但实际上却没有,而编译器静态地证明了理论上的不可能。

该提案引入了不可破坏类型(Destructible)作为取代Copyable 的新根类型。 它设想了类型不需要显式反初始化的场景,依赖编译器的静态分析来强制执行预期的清理例程。

讨论对比了使用和不使用此功能时 API 使用的难度,强调了需要显式清理时面临的潜在挑战。 对 API 文档、运行时检查和潜在风险的仔细研究与用于防止错误使用的编译时诊断进行了比较。

对话承认实现此功能的潜在复杂性以及收益是否值得付出努力的不确定性。 它引用了 Scott Meyers 关于使接口易于正确使用且难以错误使用的名言,强调了编程接口简单性和清晰性的重要性。

  1. 展示Advent of Code 2023

内容概括

Swift 社区受邀参加“Advent of Code”,这是一项从 12 月 1 日到 12 月 25 日举办的年度编码挑战赛。 这项挑战由 Eric Wastl 组织,涉及日常编码练习,开始时很简单,逐渐变得更具挑战性。

参与者可以使用任何编程语言,但有一个 Swift 团队模板可供那些喜欢 Swift 的人使用。 该模板提供了解决挑战的起点。

加入:

  1. 克隆 Swift 团队的入门模板(可选)。
  2. 在 Advent of Code 网站上创建一个帐户(参与排行榜所需)。
  3. 使用ID 3315857-f51d8ce5加入Swift社区排行榜。

我们鼓励参与者每天使用 Swift 尝试挑战。 排行榜跟踪完成时间,但分数只是为了好玩,可以忽略。

排行榜允许那些想要分享解决方案的人链接到 GitHub 帐户,为参与者提供了互相学习方法的机会。

这是一个社区活动,并不正式隶属于 Swift 项目,旨在整个 12 月享受乐趣、提高 Swift 技能并享受一些编码挑战。 参与者被警告,随着挑战变得更加严峻,挫败感可能会出现!

  1. 讨论Swift OpenAPI Generator 1.0.0-alpha.1(候选发布版)已发布(Multipart、base64、过滤、递归类型等)

内容概括

Swift OpenAPI Generator 团队已发布版本 1.0.0-alpha.1,该版本作为即将发布的 1.0 版本的候选版本,预计将在大约两周内发布。 1.0 的主要重点是增强文档和示例,没有计划更改代码。

自 2023 年 5 月以 0.1.0 版本首次开源以来,Swift OpenAPI Generator 已经取得了实质性进展。 合并了 200 多个拉取请求,产生了 24 项更新并引入了重要的新功能。

主要亮点:

一、网安学习成长路线图

网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、网安视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

三、精品网安学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、网络安全源码合集+工具包

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

五、网络安全面试题

最后就是大家最关心的网络安全面试题板块
在这里插入图片描述在这里插入图片描述

  • 13
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值