Swift 周报 第十六期

news2024/12/25 9:16:45

前言

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

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

当你来到双水村以外的大世界,你的人生目标便不单单是一名庄稼人了。Swift社区陪你一起成长,一起创造更多可能!👊👊👊

周报精选

新闻和社区:【挑战上岛】适配实时活动和灵动岛

提案:函数反向部署

Swift 论坛:围绕 Swift 6 lock 展开的讨论

推荐博文:推荐 500+ 款 App UI 设计

工具推荐:妙言

话题讨论: 如果您年龄超过 35 岁被裁员,再入职时能接受降薪吗?

新闻和社区

挑战上岛:适配实时活动和灵动岛

Apple 大中华区设计与开发加速器推出全新挑战活动,邀请开发团队限期完成实时活动和灵动岛适配。

实时活动用于在 iPhone 锁屏以及灵动岛上显示来自 App 的最新信息,帮助用户及时查看当前任务和事件的进展。参与此次活动,您将了解如何设计和开发您的实时活动,以及如何利用灵动岛带来更出色的用户体验。

我们会提供主题设计与开发讲座,您将了解如何设计和开发您的实时活动,以及如何利用灵动岛带来更出色的用户体验。

参与讲座的开发团队可在讲座当天报名参与实时活动和灵动岛适配挑战,通过审核后可获得一对一的咨询与深度辅导。参加挑战,并能够在 2022 年 12 月 20 日前完成适配和上线的团队,将有机会获得更多 App 的推广机会。

名额有限。请在 2022 年 11 月 8 日前报名参加。

要报名参加,您必须是位于大中华区的 Apple Developer Program 成员。

用 SwiftUI 实现 App 导航

导航是一个 App 的核心,它可以将用户带往 App 里功能不同的页面当中,因此,清晰而强大的导航架构对 App 而言是非常重要的。通过本次活动,我们将从设计和研发两方面来为您介绍,如何使用 SwiftUI 来实现 App 的导航架构,让用户能快速定位到 App 的各项功能。

名额有限。请在 2022 年 11 月 7 日前报名参加。

要报名参加,您必须是位于大中华区的 Apple Developer Program 成员。

使用最新 Beta 版本,做好充足准备

Beta 版iOS 16.2、iPadOS 16.2、 macOS 13.1、Apple tvOS 16.2 和 watchOS 9.2 现已推出。请确认您的 App 在这些版本上工作正常,确保 App 做好准备。要利用最新 SDK 中的改进功能,请务必使用 Xcode 14.1 RC 2 进行构建和测试。

要了解之前 Beta 版本中的已知问题是否已解决或是否有临时应对办法,请查看最新的发布说明。如果您遇到问题或有其他反馈,请告诉我们。我们十分重视您的反馈,并相信您的反馈对我们解决问题、优化功能和更新文档将大有助益。

Apple Search Ads 推出全新广告投放位置,现已亮相 App Store

Apple Search Ads 让您能轻松地在 App Store 上推广自己的 App。现在,借助全新的“Today”标签页和产品页广告投放位置,您在 App Store 上提升 App 曝光度的机会大大增加 — 当人们首次登陆、搜索特定内容和浏览要下载的 App 时,都是您推广自己 App 的大好时机。

在中国大陆的 App Store 上暂不可用。

提案

通过的提案

SE-0375 允许非可选非空参数传递给可选类型的参数 提案已通过。该提案已在十五期周报正在审查的提案模块做了详细介绍。

SE-0373 取消 result builders 中对变量的所有限制 提案已通过。该提案已在十五期周报正在审查的提案模块做了详细介绍。

正在审查的提案

SE-0377 提出了新的 borrowtake 参数修饰符 正在审查。

本提案提出的 borrowtake 参数修饰符,允许开发人员自主选择函数,用于接收不可变参数的所有权约定。这样可以通过减少调用函数所需的 ARC 来优化性能,并为 move-only 类型提供了必要的先决条件,指定函数是否会消耗 move-only 值。

SE-0376 函数反向部署 提案正在审查。

弹性 Swift 资源库,例如 Apple 平台 SDK 中存在的库,作为动态库分发。这些库的作者使用 @available 注释来指示引入声明的操作系统版本。

函数反向部署可以避免下面的缺点:

  1. 当原始库可用时,首选使用原始库的 API。
  2. 当客户端二进制文件永远不会使用时,API 实现的后备副本不存在。

SE-0366 代码上下文新增敏感关键字 move 修订后,重新审查。该提案已在十一期周报正在审查的提案模块做了详细介绍。

Swift论坛

  1. 提议隔离函数 Value 和 Sendable

  2. 提议Swift Distributed Actors (Cluster)

提议动机: 在 Swift 5.7 中,分布式 Actor 被引入为名义类型。 与 Actors 类似,它们可以使用 distributed actor 关键字对来声明。 就它们自己而言,它们不能真正做任何事情, 所有分布式的行为比如 actor 的行为实际上都由给定 actor 类型相关联的 ActorSystem 处理。具体来说,一个 actor 必须声明它将与什么类型的 actor 系统一起使用,如下所示:

import Distributed
import DistributedCluster
distributed actor Greeter {
    typealias ActorSystem = ClusterSystem
    distributed func hello(name: String) -> String {
        return "Hello \(name)!"
    }
}

这样的 Greeter 声明可以在集群分布式 actors 系统中使用此类。 也可以声明一个模块范围的默认分布式 actor 系统类型。有关更多信息,可以参考 Swift Distributed Actor Runtime 和 Swift Distributed Actor Isolation 这是大多数用户可能使用此功能的方式,如下所示:

typealias DefaultDistributedActorSystem = ClusterSystem

为了避免在每个分布式 actor 模块中重复声明 ActorSystem 类型别名。这里提出的包提供了 ClusterSystem 的实现。

解决方案: DistributedCluster 中包括 ClusterSystem 类型,它是库的核心部分。 创建之后,它会绑定到主机/端口对并开始监听传入连接:

@main
struct Main {
    static func main() async throws {
        let system = await ClusterSystem("FirstSystem") { settings in
            settings.endpoint.host = "127.0.0.1"
            settings.endpoint.port = 7337
        }
        
        try await system.terminated
    }
}

3)提议Package Registry Authentication

在SE-0292(API 规范)中提出的package registry服务可能需要对其部分或全部 API 进行身份验证,以便识别执行操作的用户并相应地授权请求。

提议动机: Web 服务中常见的身份验证方法包括基本验证 (authentication), access token 和 OAuth。 SwiftPM 目前仅支持基本验证,这限制了它与包注册服务交互的能力。
建议的解决方案: 建议修改 swift package-registry 指令和 registry 的配置并且加入 token authentication 的支持。 这些更改还应确保将来可以灵活地添加其他验证方法。

4)提议方便的 AsyncThrowingStream.makeStream 方法

在SE-0314中介绍了 AsyncStream 和 AsyncThrowingStream,它们充当标准库提供的 AsyncSequence。

提议动机:在使用 Async[Throwing]Stream 一段时间后,我们发现一个常见的用法是将 continuation 和 Async[Throwing]Stream 传递到不同的地方。这需要将 Async[Throwing]Stream.Continuation excaping 并且出传递给初始化程序的闭包。Escaping continuation 使用起来不方便,因为它需要对隐式 optional value 进行格外的操作。

建议的解决方案:为了填补这个不足,建议在 AsyncStream 和 AsyncThrowingStream 上添加一个新的静态方法 makeStream ,它返回 stream 和 continuation。

  1. 讨论围绕 Swift 6 lock 展开的讨论

  2. 讨论围绕 leetcode 2259 题 Remove Digit From Number to Maximize Result 展开的讨论

话题讨论

如果您年龄超过 35 岁被裁员,再入职时能接受降薪吗?

请在文末留下您满意的答案。

关于我们

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

操作系统实验二死锁避免之银行家算法的模拟

文章目录 死锁 (1)定义 (2)死锁产生的原因 (3)死锁产生的必要条件 (4)死锁的处理策略 银行家算法 (1)核心思想 (2)数据结构 &#x…

2.2 Pycharm 的使用

文章目录1. PyCharm 安装2. Python 项目3. 外貌设置4. 配色方案5. 字体大小6. 自动换行7. 汉化8. 翻译插件9. 添加多个解释器10. Pycharm 常用快捷键11. 自定义文件模板内容12. 前端代码运行浏览器13. 关闭 with open 提示14. 双击shift查找15. 导出配置导入配置1. PyCharm 安装…

Gwas实战分析3_群体结构增加

1.sh plink 格式转化 plink1.map/plink1.ped ------plink2.bim/fam/bed plink --file 1001genomes_snps_only_ACGTN1 --make-bed --out plink2 2.sh 群体结构分析 时间过久: for K in 2 3 4 5 6 7 8 9 10; do admixture --cv plink2.bed K∣teeadmixtrueK | tee…

HTML小游戏4 —— 简易版英雄联盟(附完整源码)

💂 网站推荐:【神级源码资源网】【摸鱼小游戏】🤟 风趣幽默的前端学习课程:👉28个案例趣学前端💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】💬 免费且实用的计算机相关知…

基于C#实现的在线聊天室的桌面系统软件

资源下载地址:https://download.csdn.net/download/sheziqiong/86863237 资源下载地址:https://download.csdn.net/download/sheziqiong/86863237 目录 个人聊天室软件 1 需求分析与概要设计 1 项目说明 1 1.1. 项目目标: 1 1.2. 软硬件环境…

庖丁解牛 指针的高端操作

本章重点 写在前面 1.字符指针 2.指针数组 3.数组指针 3.1数组指针的定义 3.2 &数组名VS数组名 3.3 数组指针的使用 二维数组与数组指针 4.数组参数和指指针参数 4.1一维数组传参 4.2 二维数组传参 4.3一级指针传参 4.4二级指针传参 5.函数指针 5.1函数指针的…

SSM基于小程序的医院预约挂号系统 毕业设计-附源码260839

SSM医院预约挂号小程序的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对医院排…

Prometheus系列(2)之EC2安装Node端

目标 为Prometheus安装Node程序。 步骤 node exporter程序 wget https://github.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gz tar xvzf node_exporter-1.4.0.linux-amd64.tar.gz cd node_exporter-1.4.0.linux-amd64/s…

技术分享 | 专项测试技术初识Hook

本文节选自霍格沃兹测试学院内部教材Hook 技术需要预先分析目标应用的源代码和逻辑,根据目标测试场景设置目标、逻辑和数据,然后运行时动态的对目标函数参数值、逻辑或者返回值做修改,达到修改现有函数逻辑、实现目标测试场景的目的。 Hook的…

汇编语言指令

文章目录算术运算指令ADDADDISUB伪指令LUILIAUIPCLA逻辑运算指令内存读写指令条件分支指令无条件跳转指令算术运算指令 ADD 语法ADD RD,RS1,RS2例子add x5,x6,x7x5x6x7编码格式:R-type opcode(7):0110011(OP) 从RS里面取出数据,把里面的数据…

【MyBatis框架】关联映射

关系映射1. 关联映射概述2. 环境搭建3.处理字段名和属性名不一致的情况4. 处理一对一映射5. 处理多对一映射5.1 级联方式处理5.2 使用association处理映射关系5.3 分步查询6. 处理一对多查询7. 小结1. 关联映射概述 在关系型数据库中,多表之间存在着三种关联关系&a…

Linux文件打包及压缩、解包及解压

目录 前言 什么是压缩? tar的介绍与使用 简介 打包压缩文件 打包文件(不压缩) gzip压缩类型压缩文件 bzip压缩类型压缩文件 xzip压缩类型压缩文件 解包解压文件 简介 解压缩(解压到当前目录) 解压缩&#x…

线代 | 【提神醒脑】自用笔记串联

一、初等变换 1、初等行变换与方程组的同解变换 2、初等行变换关系网 ※ 3、关联结论 —— 同解方程 4、行、列变换适用场景

Java 线程池之ThreadPoolExecutor学习总结

前提 java version "1.8.0_25" 池简述 软件开发活动中,我们经常会听到数据库连接池、内存池、线程池等各种“池”概念,这些“池”到底是什么东西呢?程序的世界里,我们可以将池简单的理解为一种容器类数据结构&#x…

哪本计算机书籍,让你有了醍醐灌顶突然开悟的感觉?

计算机书籍每年都会出版很多,但是能影响几代程序员的有这几本书,推荐一下,肯定让你有醍醐灌顶的开悟的感觉。 1、重构 改善既有代码的设计(第2版 平装版) 豆瓣评分:9.2 本书是一本为专业程序员编写的重构指…

30岁本科男,在测试行业干了五年还只会功能测试,难道真的要去送外卖吗?

在网上看到一个帖子 从发帖内容可以看出,题主是一位拥有五年功能测试经验的IT从业者,他也深知功能测试现在的处境艰难,想改变,却又因为年龄和经济压力的原因迟迟不敢迈出第一步,其实这是很多年近30岁的人事业危机的缩影…

【Java】之File类

个人主页:天寒雨落的博客_CSDN博客-C,CSDN竞赛,python领域博主 特别标注:仅为自己的学习记录笔记,方便复习和加深记忆,仅供借鉴参考! 前篇回顾:【java】之File类_天寒雨落的博客-CSDN博客 目录 目录的遍历…

五 系统安全分析与设计

目录 一、安全基础技术 1.1 对称与非对称加密 1.2 数字签名(防抵赖) 1.3 信息摘要(防篡改) 1.4 加密、数字签名、信息摘要结合使用 1.5 数字证书(防止公钥被截取篡改) 二、网络安全 2.1 安全协议 …

Android LayerDrawable 使用

1. 前言 Android LayerDrawble 包含一个Drawable数组&#xff0c;系统将会按照这些Drawable对象的数组顺序来绘制他们&#xff0c;索引最大的 Drawable 对象将会被绘制在最上面。 LayerDrawable对象的xml文件的根元素是<layer-list>&#xff0c; 该元素内部包含多个<i…

【Linux】开发工具之gdb调试器

目录&#x1f308;前言&#x1f337;1、debug与release&#x1f338;2、gdb选项&#x1f308;前言 本篇文章进行调试器gdb的学习&#xff01;&#xff01;&#xff01; &#x1f337;1、debug与release debug会生成需要调试的信息&#xff0c;release不会生成 程序的发布方式有…