Swift 周报 第二十三期
前言
本期是 Swift 编辑组自主整理周报的第十四期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。
欢迎投稿或推荐内容。目前计划每两周周一发布,欢迎志同道合的朋友一起加入周报整理。
勇敢是即便知道好结局不会每每降临在我们身上,但也依然选择热爱和坚持。Swift社区会伴你一起,见证每一刻勇敢的光亮!
周报精选
新闻和社区:苹果iPhone 15 Pro硬件细节曝光,广大网友期待USB-C接口迎来普及
Swift 论坛:讨论嵌套泛型的问题
推荐博文:iOS App 项目优化
话题讨论:
生活中遇到的问题你会使用 chatGTP 寻找答案吗?
新闻和社区
苹果iPhone 15 Pro硬件细节曝光,广大网友期待USB-C接口迎来普及
苹果在欧美市场已被多个监管施压放弃Lighting接口改为USB-C接口,最新关于苹果 iPhone 15 Pro硬件细节爆料消息,似乎透露着苹果公司将将在自家产品正式放弃Lighting接口改为 USB-C 接口。从苹果 iPhone 15 Pro 真机图片来看,苹果 iPhone 15 Pro 开始使用USB-C接口。随着安卓手机厂商普遍采用 USB-C 接口,目前来看苹果公司在自家新品上采用 USB-C 接口,也是整个手机行业的大势所趋。
除此之外,苹果 iPhone 15 Pro 硬件外观部分也更加圆润,同时音量键设计也改为电容式设计,后置摄像头的镜头模组也变得更加凸起,意味着苹果公司在新的 iPhone 15 Pro 机型镜头模组进行了升级。
总体来说,iPhone 15 Pro 大概率也将是 iPhone 14Pro 升级产品,相较前代机型,在细节部分进行了进一步的优化完善。来源: IT极客世界。
苹果也要“降本增效”?步亚马逊、Meta等公司后尘,大刀砍向员工
在亚马逊、微软、谷歌等国际科技巨头们裁员后,苹果也被曝出裁员消息。2 月 17 日,《纽约邮报》援引知情人士报道,苹果公司在过去几天裁减了数百名合同未到期的外包合同工。
作为全世界最赚钱的公司之一,苹果公司曾在 2022 年公开宣称不会裁员,但将停止招聘。但随着 2022 年四季度不及预期的财报发布后,苹果还是动了裁员的念头。
据苹果公司发布 10-12 月份的季度业绩显示,其实现总净销售额 1171.54 亿美元,同比下滑 5% ,不仅低于市场预期的 1211.04 亿元,还创造了 2019 财年来首次营收同比下滑。iPhone、Mac、可穿戴设备等业务营收均出现不同程度的下滑,仅iPad业务的营收实现了同比增长。
为挽救业务,苹果一方面加大促销力度,于 2022 年 9 月开始在中国销售的 iPhone 14 系列,在上市不到半年后即推出“全系降价 600 元- 800 元”的促销活动。搁往年,苹果最新款降价一般都在六七月份。如今,裁员也成为“降本增效”的新选择。
Swift论坛
- 讨论WebURL KeyValuePairs API
为了更容易地从 URL 组件读取/写入键值对,WebURL 0.5.0 将包含一个新的 KeyValuePairs 类型。 当前的 formParams 视图将在下一个次要版本中弃用和删除。
- 讨论将反射元数据划分为运行时和调试类别
目前的情况:
- 可以完全启用或禁用反射功能。 (中间没有选项)
- 当使用
-disable-reflection-metadata
标志禁用时,LLDB 将无法使用反射元数据,从而导致调试功能显着降低。 - 启用后,dsymutil 将反射信息从 TEXT 复制到 dSYM 的 DWARF 段,这允许 lldb 稍后发现它。
- 通过使用
-enable-reflection-for-debugger-only
标志,LLDB 可以使用反射,但是,它不会链接到 NTD,这将允许链接器通过 dead-stripping 消除它。
设计:
快速编译器:
-
扩展 FieldTypeMetadataBuilder(可能还有其他构建器)并使其可从外部进行配置。
-
在 emitFieldDescriptor 中实例化两个 FieldTypeMetadataBuilder,一个将直接在 _DWARF 中发射全反射,另一个将像往常一样发射反射到 _TEXT 段。 前者将由 -g 系列标志控制,而后者将由反射标志控制。
DSYMUTIL:
- 更改 dsymutil,而不是从 TEXT 复制反射,而是将其复制到 DWRAF 段。
LLDB:
- 可能需要更改 LLDB,以教会它在没有提供 DSYM 的情况下进行调试时发现 DWARF 段中的反射。
-
讨论防止优化 XCFramework 所需的公共接口(又名 dyld:未找到符号)
-
提议SE-0388:便捷 Async[Throwing]Stream.makeStream 方法
便捷 Async[Throwing]Stream.makeStream 方法”的审查现在开始,一直持续到 2023 年 2 月 26 日。
该提案可在此处获得:https://github.com/apple/swift-evolution/blob/main/proposals/0388-async-stream-factory.md
- 讨论Swift 开发容器模板
内容大概:
Visual Studio Code 的优势之一是您可以在 docker 容器内开发项目。 如果你在 macOS 上开发但部署到 Linux,你不再需要在 Linux 上运行你的代码来验证它是否工作,你可以在你的 Mac 上编辑、编译、运行和调试你的项目,在 VS Code 中运行的 docker 容器中。
到目前为止,您可以通过手动编辑 devcontainer.json 文件或下载由 Microsoft 管理的快速开发模板来定义容器环境。
由 Microsoft 管理模板意味着在需要对模板进行更改时需要他们的输入(通过 PR 审查),例如添加新版本的 swift。
最近这种情况发生了变化,Swift devcontainer 模板的责任已转移到 SSWG。 devcontainer 现在存储在 swift-server GitHub 组织中。
我们做的第一件事是使模板现代化。 我们用等效的 devcontainer common-utils 功能替换了原始模板具有的 shell 脚本。 您可以在此处找到有关 devcontainer
功能的更多信息。原始模板有一个安装 Node.js 的选项(在大多数模板中实现的标准 MS)。 这已被删除,因为现在可以通过 devcontainer 功能完成。
新的 devcontainer GitHub链接:https://github.com/swift-server/swift-devcontainer-template
- 提问嵌套泛型的问题
protocol P {}
struct S: P {}func foo<T: P>(_ value: T) {print(type(of: value)) // Sprint(value) // S()bar(value)
}func bar(_ value: S) { print("S call") }func bar<T: P>(_ value: T) { print("P call") }func test() {let s = S()bar(s) // S callfoo(s) // P call
}
calling bar 直接打印出预期的“S call”,但通过“foo”调用它会打印出意外的“P call”。我的期望是错误的?
有趣的是它在 C++ 中按预期工作。
- 提议Swift 异步算法提案:缓冲区
介绍:
缓冲是一种通过临时存储元素来平衡生产和消耗率波动来平衡供需的技术。 AsyncStream
通过允许您控制缓冲区的大小和处理超过该大小的元素的策略来促进此过程。 但是,这种方法可能并不适合所有情况,并且它不提供一种方法来调整其他 AsyncSequence
类型以合并缓冲。
该提案提出了一种新类型,可以满足这些更高级的要求,并为异步序列中的缓冲提供全面的解决方案。
- 提议自定义 Actor 执行器
介绍:
该提案侧重于使 actor 执行程序可由库作者或最终用户配置的最小可行部分。 它基于 @John_McCall
的自定义执行器 16 的早期草案,我们在 Swift 并发性首次引入时分享了该草案,但我们从未正式确定它引入的想法。
在过去的几年里,我们发现了什么有效,什么需要更多的思考。 该提案侧重于标准化基本的 SerialExecutor
机制以及参与者如何自定义他们想要运行任务的位置。 我们也承认之前提出的未来工作领域,我们不打算在本提案中一次解决所有这些问题; 请参阅“未来方向”部分以了解更多信息。 有趣的是,这个 API 的某些部分被默默地引入并融入了 Swift 并发的 ABI——在适用的情况下,我们解释了这些关系以及我们如何使提议的 API 满足那些现有的要求。
这个推介也与最近推介的 unsafeAssumeMainActor
想法有一点关系,因为它打开了共享同一个串行执行器的各种参与者的领域,并引入了基于此的断言。
话题讨论
生活中遇到的问题你会使用 chatGTP 寻找答案吗?
欢迎在文末留言参与讨论。
关于我们
Swift社区是由 Swift 爱好者共同维护的公益组织,我们会分享以 Swift实战、SwiftUl、Swift基础为核心的技术内容,也整理收集优秀的学习资料。
特别感谢 Swift社区 编辑部的每一位编辑,感谢大家的辛苦付出,为 Swift社区 提供优质内容,为 Swift 语言的发展贡献自己的力量。
相关文章:

Swift 周报 第二十三期
前言 本期是 Swift 编辑组自主整理周报的第十四期,每个模块已初步成型。各位读者如果有好的提议,欢迎在文末留言。 欢迎投稿或推荐内容。目前计划每两周周一发布,欢迎志同道合的朋友一起加入周报整理。 勇敢是即便知道好结局不会每每降临在…...
android系统屏幕旋转角度,应用界面横竖屏,设备旋转角度,三者的区别以及使用。
注意区分以下三种概念的区别!!!。以及使用这三种方式判断横竖屏的方式。系统屏幕旋转角度fun getSystemRotation(): Int {val angle (getSystemService(WINDOW_SERVICE) as WindowManager).defaultDisplay.rotation//系统屏幕旋转的角度值re…...

【华为云-开发者专属集市】DevCloud+ECS、MySQL搭建WordPress
文章目录AppBazaar官网选择与购买项目项目概况操作过程购买DevCloud服务创建项目添加制品库应用部署购买ECS添加部署模板并执行任务故障排除安装及访问WordPress登录网站管理后台访问网站完善部署模板资源释放使用总结AppBazaar官网 首先,我们来到AppBazaar的官网&…...

Milvus 群星闪耀时|又一个小目标达成 :社区正式突破 15,000 星!
如果把 Milvus 看作开源世界中的一束微光,那用户便是无垠宇宙中点点闪烁的星光。用户每一次点亮 star 之时,Milvus 就会迸发出更加耀眼的光芒。不知不觉,已有数以万计的 star 为 Milvus 而亮。2022 年 4 月,Milvus 在 GitHub 的 …...

Qt信号与槽使用方法总结
前言 在图形界面编程中QT是为首选,组件之间如何实现通信是核心的技术内容。Qt 使用了信号与槽的机制,非常的高效、简单、易学,方便开发者的使用。本文详细的介绍了Qt 当中信号与槽的概念,并演示了各种信号与槽的连接方式。 什么…...

SpringCloud alibaba-Sentinel服务降级策略
文章目录RT:异常比例:异常数:RT: 平均响应时间 (DEGRADE_GRADE_RT):当 1s 内持续进入 N 个请求,对应时刻的平均响应时间(秒级)均超过阈值(count,以 ms 为单位…...
python常用函数——random()函数
random() 返回随机生成的一个实数,范围在[0,1)之间 语法如下: import random random.random() # 注意:random()是不能直接访问的,需要导入random包,然后通过random静态对象调用 # 参数: 无 # 返回值 返回随…...

PX4之启动脚本
PX4通过rcS脚本来设定需要启动的程序,比如设备驱动、控制模块、数据通信等。rcS脚本在项目中的文件位置 ROMFS/px4fmu_common/rcS 对应硬件平台固件上的位置 /etc/init.d/rcS 启动脚本流程如下 #!/bin/sh # PX4FMU startup script. # # 一些注释 ## 设置默认参…...

Java零基础入门到精通(持续更新中)
打开CMD命令窗口 WINR输入cmd 常用cmd命令代码 切换磁盘 E: 回车即可切换到e盘查看当前路径下的所有内容 dir进入目录 cd test回退到上一级目录 cd..进入多级目录 cd test\index\aaa回退到磁盘目录 cd \清屏 cls关闭命令行窗口 exit小例子:使用命令行窗口…...
杂七杂八(12):Bilibili视频缓存 m4s音视频合并 shell脚本
视频目录结构如下: 267132000/ 267132000/c_1015740000/ 267132000/c_1015740000/entry.json 267132000/c_1015740000/80/ 267132000/c_1015740000/80/audio.m4s 267132000/c_1015740000/80/video.m4s267132000/c_1015740011/ 267132000/c_1015740011/entry.json 2…...

Qt 某光谱仪程序开发
某光谱仪程序开发 文章目录某光谱仪程序开发摘要安装驱动注册COM组件导出.h和.cpp在Qt 中添加源文件开发打包程序关键字: Demo、 Qt、 COM、 dumpcpp、 C摘要 今天接到一个临时小任务,写一个的项目子模块的Demo,以供和专家们交流一下项目技…...

蛋白质组学技术与常见分析培训班火热招生中!
什么是蛋白质组学? 蛋白质组学(proteomics),是以蛋白质组为研究对象,研究细胞、组织或生物体蛋白质组成及其变化规律的科学。包括蛋白质的表达水平,翻译后修饰,蛋白与蛋白相互作用等研究内容,集中于动态描述…...

唤醒手腕 Java 后端 Springboot 框架结合 socketio 学习笔记
socketio 安装配置 Socket.IO是一个完全由JavaScript实现、基于Node.js、支持WebSocket的协议用于实时通信、跨平台的开源框架,它包括了客户端的JavaScript和服务器端的Node.js。 Socket.IO除了支持WebSocket通讯协议外,还支持许多种轮询(P…...

C++入门:内联函数、auto关键字、基于范围for循环及指针空值nullptr
目录 一. 内联函数 1.1 内联函数的概念 1.2 内联函数的特性 1.3 内联函数和宏的优缺点对比 二. auto关键字(C11) 2.1 auto的功能 2.2 auto在使用时的注意事项 三. 基于范围的for循环(C11) 四. 指针空值nullptr(…...

Python遗传算法
1 人工智能概述 2020中国人工智能产业年会在苏州召开,会上发布的《中国人工智能发展报告2020》显示,过去十年(2011-2020) ,中国人工智能专利申请量达389571件,占全球总量的74.7%,位居世界第一。 报告指出,…...

GEE学习笔记 六十四:绿色中国报告(个人版)
2019年上半年在遥感圈里最火的一篇文章莫过于这篇《China and India lead in greening of the world through land-use management》(China and India lead in greening of the world through land-use management | Nature Sustainability),…...

【Kubernetes】【十八】数据存储 高级存储 配置存储
高级存储 PV和PVC 前面已经学习了使用NFS提供存储,此时就要求用户会搭建NFS系统,并且会在yaml配置nfs。由于kubernetes支持的存储系统有很多,要求客户全都掌握,显然不现实。为了能够屏蔽底层存储实现的细节,方便用…...

传输层TCP与UDP协议
目录 传输层 传输层功能 传输层所提供的服务 传输层的两个协议 TCP协议与UDP协议 端口 端口分类 IP地址和端口的关系 UDP协议 前言: UDP报文格式 检验和的伪首部 伪首部内容 TCP协议 TCP报文格式 TCP协议数据段的理解 TCP的伪首部 伪首部内容 标…...
字节数组的通俗解释
1.字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位。2.在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。注意:utf-8码中一个汉字占三个字节&…...

硬件学习 软件Cadence day06 原理图网表导入PCB (过程和操作的错误),开始的画板
1.新建一个制作芯片的工程 1.打开 File ->New 2.填写信息,设置路径 2.原理图的网表导入 1.打开这个窗口 File -> import ->Logic.. 2.确定信息 3.解决网表导入时出现的错误 1. 第一个案列 (没有找到文件 也是这个) 比如说: WARNING(…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...