Swift 周报 第四十六期

在这里插入图片描述

在这里插入图片描述

文章目录

    • 前言
      • 卖不动了?iPhone 15 系列跌破 5000 元大关
      • StoreKit 和审核指南更新
      • 将你的 App 提交到 Apple Vision Pro 的 App Store
    • 提案
      • 通过的提案
    • Swift论坛
    • 推荐博文
    • 话题讨论
    • 关于我们

前言

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

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

没有永远的上游,但我们可以永远向上游。Swift社区让你如鱼得水,激流勇进!👊👊👊

周报精选

新闻和社区:卖不动了?iPhone 15 系列跌破 5000 元大关

提案:Low-Level Atomic Operations 提案通过审查

Swift 论坛:讨论 1 << x 类型推断

推荐博文:Swift 的内购测试

话题讨论:

你是否设想过自己35岁之后该做什么工作呢?

卖不动了?iPhone 15 系列跌破 5000 元大关

【环球网科技综合报道】连日来,苹果全线产品在官方旗舰店以及线上平台迎来降价。
1 月 15 日早间,苹果(中国大陆)官网发布降价信息,1 月 18 日 - 21 日苹果部分产品新春促销,iPhone 15 全系列参与活动,手机产品最高降价 500 元,苹果笔记本电脑产品最高降价 800 元。
继苹果官网降价后,京东也宣布年货节活动,苹果产品京东自营旗舰店 iPhone 15 系列最高可减 1050 元、iPhone 14 最高可减750 元。其中,iPhone 15 Pro Max 256GB 版到手价 8949 元,iPhone 15 Pro 256GB 版到手价 7949 元,iPhone 15 128GB 版到手价 4949 元,以上机型全部可享限时 12 期免息。此外,iPad 指定产品最高优惠 700 元、 MacBook指定型号最高可优惠 1400 元。

不难看出,相比 1 月 15 日苹果官网所公布的新春降价,此次电商平台优惠力度明显更大。业内人士称,产品接连降价,难道苹果卖不动了?
根据苹果公司 2023 财年财报(截至 2023 年 9 月 30 日),三季度,苹果大中华区营收为 150.84 亿美元,同比下降 2.5%;整体营收为 894.98 亿美元,下降 0.72% ,且除了 iPhone 业务以外的其他所有硬件业务均出现了同比下滑。
而在不久前,据美国投行杰富瑞(Jefferies)分析师发布的报告,苹果公司 iPhone 在中国市场销量下滑的颓势正在加剧,iPhone 销量在 2024 年第一周就出现了断崖式下跌,较上年同期暴跌 30% 。
但 Counterpoint Research 方面指出,苹果依然是高端手机市场无可争议的领导者,不过与 2022 年相比,其市场份额确有所下降。2023 年三季度,苹果手机销量同比下滑 10%,市场占有率由 2022 年同期 15.3% 下降至 14.2% 。华为、小米同期市占率分别提升了 3.8 个百分点和 1 个百分点。

StoreKit 和审核指南更新

2024 年 1 月 16 日

从即日起,根据美国法院近期的一项判决,《App Store 审核指南》第 3.1.1 部分已更新,以推出 StoreKit 购买链接授权 (美国)。该授权适用于在美国店面的 iOS 或 iPadOS App Store 上提供 App 内购买项目的 App,获得授权的开发者可在 App 内包含自己网站的链接,以告知用户还有其他购买数字商品或服务的方式。

我们认为,Apple 的 App 内购买项目系统是用户购买数字商品和服务极为安全可靠的方式。因此,对于 App 内的数字商品和服务购买,你仍需使用 App 内购买项目系统。如果你考虑同时使用此授权,请务必了解,在你的网站上购买项目的顾客将无法使用某些 App Store 功能,例如“购买前询问”或“家人共享”。而且,Apple 将无法协助顾客处理退款、购买历史记录、订阅管理以及购买数字商品和服务时遇到的其他问题。你将需要与顾客一起解决此类问题。

对于通过 StoreKit 购买链接授权 (美国) 促成的数字购买,Apple 将收取一定的收益抽成。

将你的 App 提交到 Apple Vision Pro 的 App Store

2024 年 1 月 8 日

Apple Vision Pro 将拥有全新的 App Store,帮助用户发现并下载各款出色的 visionOS App。我们提供了一个新的页面介绍如何准备 App 并将其提交到 App Store,非常适用于已构建了新的 visionOS App 的开发者,以及将向 Apple Vision Pro 用户提供 iPad 或 iPhone App 的开发者。

提案

通过的提案

SE-0410 Low-Level Atomic Operations 提案通过审查。该提案已在 四十期周报 正在审查的提案模块做了详细介绍。

SE-0413 Typed throws 提案通过审查。该提案已在 四十二期周报 正在审查的提案模块做了详细介绍。

Swift论坛

  1. 提议字符串插值的默认值

内容概括

该提案建议向 Swift 添加一项新功能,以解决涉及可选值的字符串插值的挑战。 目前,当在字符串中插入可选值时,开发人员面临警告和提供默认值的选项有限的问题。 所提出的解决方案建议引入新的字符串插值重载,该重载允许开发人员指定默认字符串,而不管可选值的类型如何。

介绍

Pitch 建议在插入可选值时使用新的默认值字符串插入语法。

动机

字符串插值很强大,但在处理可选值时会变得复杂。
当前的解决方案在处理可选值时涉及繁琐的代码或不需要的输出。

例子

演示插入可选字符串和可选整数时的挑战。
当前的解决方案涉及笨拙的代码或零合并运算符的限制。

建议的解决方案

引入新的插值重载,允许将预期默认值指定为字符串,而不管值的类型如何。

let age: Int? = nil
print("Your age: \(age, default: "missing")")

详细设计

这个新的插值重载的实现如下所示:

extension String.StringInterpolation {mutating func appendInterpolation<T>(_ value: T?, default: @autoclosure () -> String) {self.appendLiteral(value.map(String.init(describing:)) ?? `default`())}
}
  1. 讨论Swift Rational - 用于处理有理数的 Swift 包

内容概括

Swift Rational 提供了 RationalModule 模块,用于在 Swift 中处理有理数。

RationalModule 导出 Rational 结构。 它符合标准 Swift 协议,如 AdditiveArithmetic、Numeric、Hashable、Comparable 等。

您可以使用分数初始值设定项创建有理值。

let half = Rational(2, 4)
print(x.numerator)		// 1
print(x.denominator).	// 2

您还可以使用整数初始值设定项。

let one = Rational(1)

或者只是一个整数文字。

let two: Rational<Int> = 2

Rational 支持标准算术和比较运算符。

Rational(1, 2) + Rational(1, 4)		// Rational(3, 4)
Rational(1)    - Rational(1, 2)		// Rational(1, 2)
Rational(2)    * Rational(3, 4)		// Rational(3, 2)
Rational(1)    / Rational(1, 2)		// Rational(2, 1)
Rational(1, 2) < Rational(3, 4)		// true

Github库连接:https://github.com/abdel-17/swift-rational

  1. 讨论1 << x 类型推断

提问

发现了这个区别:

let x: UInt64 = 1
print(type(of: 1 + x))  // UInt64
print(type(of: 1 << x)) // Int

第二个结果是错误还是功能? 我也希望在那里得到 UInt64 。

回答

移位值中的位完全来自左侧,并且移位的限制也来自左侧,因此结果类型始终与左侧匹配。 这使您可以使用 Int8 固定字段来描述 UInt64 值的移位,这完全没问题,因为最大有用移位量为“64”。

  1. 讨论类型转换是如何工作的?

类型转换如何,例如 as? 运算符,实施了吗?
例如,考虑 eqZero 函数

func eqZero<T>(_ x: T) -> Bool {guard let x = x as? Int else { return false }return x == 0
}

x 参数是否带有类型标记来检查它是否可以在运行时向下转换?
如果是这样,如果不使用此类转换操作,编译器是否足以优化掉此类标签?

回答

从技术上讲,传入的不是一个框,它“只是”一个指针,类型作为单独的参数传递。 这对于值已经在堆栈或堆上的情况很有帮助。 当您使用 Any 或 any Blah 时,会出现“box”形式,因为这样值必须与其类型保持关联,但对于泛型和某些 Blah 来说,单独传递它们会更灵活,并且可以减少分配流量。 这也意味着当在参数列表中多次使用该类型时,只需传递一次。

  1. 讨论~Copyable 和 Completion Handlers

我想编写一些代码,在其中我可以静态地确保将调用完成处理程序。 像这样的东西:

struct CompletionHandler<T>: ~Copyable {private let f: (T) -> Voidinit(f: consuming @escaping (T) -> Void) { self.f = f }consuming func callAsFunction(_ t: T) -> Void {f(t)}
}

基本上,这个想法是,这里的清理需要调用处理程序,因为处理程序的闭包已捕获需要释放或以其他方式解析的资源。
我希望将这种类型的实例传递给另一个函数,如下所示:

func invokeHandler<A>(_ completion: consuming CompletionHandler<A>) {// don't invoke the handler
}

将无法编译,因为尚未调用该类型的唯一消耗路径。
但这段代码看起来不错,我假设 bc 消耗可以简单地取消初始化完成处理程序。 我正在尝试做的事情是否可能或可能已计划但尚未实施?

回答

由于提前退出和仿制药等问题,它变得很棘手。 一种思考方式是 ~Ignorable 是与 ~Copyable 类似的条件,但又不同。 其技术术语是“线性类型”或“相关类型”,您可以在此论坛上找到一些先前的讨论。

@escaping 闭包是可复制类型,并且可复制类型的借用/消耗实际上并不能保证对值的生命周期产生静态影响,因为您始终可以通过复制值来延长生命周期。 当调用者可能拥有对值的唯一剩余引用时,使用消费是一种优化,允许调用者存储参数或将其用作聚合返回值的一部分而不复制它,或者只是提前结束其生命周期 。

推荐博文

Swift 的内购测试

摘要: 这篇博客介绍了在 Swift 中使用 StoreKitTest 框架进行应用内购买测试的方法。作者首先概述了最近 StoreKit 框架的重大变化,强调了新版本充分采用了 Swift 语言的异步和等待特性。

随后,博客详细介绍了 StoreKitTest 框架,该框架允许我们编写测试用例以验证应用在应用内购买、退款、ask-to-buy 和订阅过期等方面的处理能力。通过示例代码,演示了如何使用 SKTestSession 类型执行购买、管理交易、模拟退款以及测试应用对交易更新的反应。博客还提到了创建 StoreKit 配置文件的必要性。

Swift Evolution:阅读提案并从中学习

摘要: 这篇博客介绍了 Swift 编程语言的演进过程,重点关注了通过阅读和学习 Swift Evolution 提案来了解语言变化的方式。作者指出 Swift 的不断演进源于 Swift Evolution 仓库内的公开提案,这些提案是了解最新发展的良好途径。

博客解释了 Swift Evolution 的定义和作用,强调了语言开源的特点,任何人都可以通过提出好的想法来影响未来功能和方向。提案经过讨论和批准后成为发布目标,可以在官方 Swift 网站上进行跟踪。作者还简要概述了从提出一个提案到将其纳入 Swift 发布的过程,强调了提案经历多个状态。读者被鼓励查阅 Swift Evolution 过程文档获取最新状态概述。

ElasticSearch 与 Swift 集成

摘要: 本篇博客详细介绍了 Elasticsearch 与 Swift 的集成,旨在帮助开发者将强大的搜索引擎功能整合到 Swift 应用程序中,提升用户体验。文章首先介绍了 Elasticsearch 和 Swift 的背景,分别强调了 Elasticsearch 作为基于 Lucene 的搜索引擎的特性,以及 Swift 作为苹果主要开发语言的优势。

核心概念与联系部分深入解释了集成前需要了解的核心概念,包括 Elasticsearch 的索引、查询、分词、词典等原理,以及 Swift 的类型安全、自动引用计数、高性能等特点。接着,文章详细探讨了集成的操作步骤,包括安装 Elasticsearch 、创建索引、使用 Swift 访问 Elasticsearch 、执行搜索查询等步骤。

话题讨论

每个年轻人都会慢慢长大,每个程序员也会逐渐变老,你是否设想过自己 35 岁之后该做什么工作呢?

  1. 努力成为中高层领导
  2. 继续专研技术成为高级程序员
  3. 成为培训老师
  4. 成为独立开发者带队出来接项目
  5. 创业单干,成就梦想
  6. 出国,国外程序员对年龄要求甚小
  7. 转行跑滴滴,送外卖,做销售。

欢迎在文末留言参与讨论。

关于我们

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用C语言实现贪吃蛇游戏!!!

前言 大家好呀&#xff0c;我是Humble&#xff0c;不知不觉在CSND分享自己学过的C语言知识已经有三个多月了&#xff0c;从开始的C语言常见语法概念说到C语言的数据结构今天用C语言实现贪吃蛇已经有30余篇博客的内容&#xff0c;也希望这些内容可以帮助到各位正在阅读的小伙伴…

Spark3内核源码与优化

文章目录 一、Spark内核原理1、Spark 内核概述1.1 简介1.2 Spark 核心组件1.3 Spark 通用运行流程概述 2、Spark 部署模式2.1 YARN Cluster 模式(重点)2.2 YARN Client 模式2.3 Standalone Cluster 模式2.4 Standalone Client 模式 3、Spark 通讯架构3.1 Spark 通信架构概述3.2…

Springboot响应数据详解

功能接口 Controller下每一个暴露在外的方法都是一个功能接口 功能接口的请求路径是RequestMapping定义的路径&#xff0c;浏览器需要请求该功能则需要发出该路径下的请求。 RestController RestControllerControllerResponseBody(响应数据的注解) ResponseBody 类型&#…

视频号下载提取器:如何轻松获取视频号的视频

在数字化的世界中&#xff0c;我们每天重复刷着形形色色的短视频&#xff0c;你们知道他们每天接收到的媒体内容就是经过不断的处理和编辑呈现在我们观看的产物。 其中&#xff0c;视频内容由于其生动形象的表现形式&#xff0c;已经成为人们获取信息、娱乐和学习的重要途径。然…

[GXYCTF2019]BabyUpload1

尝试各种文件&#xff0c;黑名单过滤后缀ph&#xff0c;content-type限制image/jpeg 内容过滤<?&#xff0c;木马改用<script languagephp>eval($_POST[cmdjs]);</script> 上传.htaccess将上传的文件当作php解析 蚁剑连接得到flag

城市开发区视频系统建设方案:打造视频基座、加强图像数据治理

一、背景需求 随着城市建设的步伐日益加快&#xff0c;开发区已经成为了我国工业化、城镇化和对外开放的重要载体。自贸区、开发区和产业园的管理工作自然也变得至关重要。在城市经开区的展览展示馆、进出口商品展示交易中心等地&#xff0c;数千路监控摄像头遍布各角落&#…

嵌入式第十二天!(指针数组、指针和二维数组的关系、二级指针)

1. 指针数组&#xff1a; int *a[5]; char *str[5]; 指针数组主要用来操作字符串数组&#xff0c;通常将指针数组的每个元素存放字符串的首地址实现对多个字符串的操作。 二维数组主要用来存储字符串数组&#xff0c;通过每行存储一个字符串&#xff0c;多行存储多个字符串所组…

Phoncent博客GPT写作工具

对于许多人来说&#xff0c;写作并不是一件轻松的事情。有时候&#xff0c;我们可能会遇到写作灵感枯竭、写作思路混乱、语言表达困难等问题。为了解决这些问题&#xff0c;Phoncent博客推出了一款创新的工具——GPT写作工具&#xff0c;它利用了GPT技术&#xff0c;为用户提供…

linux安装docker-compose

前言 如果你的docker版本是23&#xff0c;请移步到linux安装新版docker&#xff08;23&#xff09;和docker-compose这篇博客 查看docker版本命令&#xff1a; docker --version今天安装docker-compose的时候&#xff0c;找了很多教程&#xff0c;但是本地一直报错&#xff0…

掌握使用 React 和 Ant Design 的个人博客艺术之美

文章目录 前言在React的海洋中起航安装 Create React App安装Ant Design 打造个性化的博客风格通过路由实现多页面美化与样式定制部署与分享总结 前言 在当今数字时代&#xff0c;个人博客成为表达观点、分享经验和展示技能的独特平台。在这个互联网浪潮中&#xff0c;选择使用…

每日一道面试题:Java中序列化与反序列化

写在开头 哈喽大家好&#xff0c;在高铁上码字的感觉是真不爽啊&#xff0c;小桌板又拥挤&#xff0c;旁边的小朋友也比较的吵闹&#xff0c;影响思绪&#xff0c;但这丝毫不影响咱学习的劲头&#xff01;哈哈哈&#xff0c;在这喧哗的车厢中&#xff0c;思考着这样的一个问题…

Ubuntu本地部署Nextcloud并结合内网穿透实现远程访问搭建个人云盘

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 摘要1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访…

百度云网盘下载速度如何提升到正常速度

引入问题 我们在下载代码学习资料的时候大多数都是百度云网盘&#xff0c;但是限速&#xff01;下载的十分的慢&#xff0c;有什么办法能让我们不开通会员就能享受正常速度呢&#xff1f; 当然有&#xff01; 解决百度云网盘下载速度过慢&#xff0c;提高到正常速度 点击右…

Python中如何将字符串变成数字?

字符串和数字是Python中常见的数据类型&#xff0c;而且在撰写Python程序的时候&#xff0c;也经常会遇到需要将字符串转换为数字的情况&#xff0c;那么Python中如何将字符串变成数字?有多种方法可以使用&#xff0c;接下来一起来看看具体内容介绍。 1、使用int()函数 int(…

数字图像处理(实践篇)二十七 Python-OpenCV 滑动条的使用

目录 1 涉及的函数 2 实践 1 涉及的函数 ⒈ setWindowProperty()用于设置GUI应用程序的属性 cv2.setWindowProperty(windowsName, prop_id, prop_value) 参数: ①

[机器学习]KNN——K邻近算法实现

一.K邻近算法概念 二.代码实现 # 0. 引入依赖 import numpy as np import pandas as pd# 这里直接引入sklearn里的数据集&#xff0c;iris鸢尾花 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split # 切分数据集为训练集和测试…

代码随想录算法训练营第四十六天|139.单词拆分、多重背包、背包问题总结

题目&#xff1a;139.单词拆分 文章链接&#xff1a;代码随想录 视频链接&#xff1a;LeetCode:139.单词拆分 题目链接&#xff1a;力扣题目链接 图释&#xff1a; class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {// 将字符串的列…

C++之类继承隐式转换实例(二百五十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

Hbase-2.4.11_hadoop-3.1.3集群_大数据集群_SSH修改默认端口22为其他端口---记录025_大数据工作笔记0185

其实修改起来非常简单,但是在大数据集群中,使用到了很多的脚步,也需要修改, 这里把,大数据集群,整体如何修改SSH端口,为22022,进行总结一下: 0.hbase-2.4.11的话,hbase集群修改默认SSH端口22,修改成22022,需要修改 需要修改/opt/module/hbase-2.4.11/conf/hbase-env.sh 这里…

解锁一些SQL注入的姿势

昨天课堂上布置了要去看一些sql注入的案例&#xff0c;以下是我的心得&#xff1a; ​​​​​​​ ​​​​​​​ ​​​​​​​ 1.新方法 打了sqli的前十关&#xff0c;我发现一般都是联合查询&#xff0c;但是有没有不是联合查询的方法呢&#xf…