我报名参与金石方案1期应战——瓜分10万奖池,这是我的第3篇文章,点击检查活动概况

前言

本期是 Swift 修改组自主收拾周报的第四期,每个模块还在调整磨合期。各位读者如果有好的提议,欢迎在文末留言。

欢迎投稿或引荐内容。目前方案每两周周一发布,欢迎情投意合的朋友一同加入周报收拾。

昔孔子登泰山而小全国, 今诸君阅Swift社区皆足矣。请君浅读,与君共勉!

周报精选

新闻和社区:iPhone14 Pro 刘海变“灵动岛”

提案:大量提案审核成果已公布

Swift 论坛:论坛内容丰富,欢迎参与评论

引荐博文:增加 App 排名的 ASO 小技巧

新闻和社区

iPhone14 Pro 刘海变“灵动岛”

iPhone14 Pro 来了,从外观看两个亮点,第一是新配色 #iPhone14Pro 灭霸紫# 美观吗?第二是刘海变成了药丸,不是感叹号,可是带来了 #iPhone14Pro 灵动岛#,和显现动画合为一体。

本次发布会,iphone14pro 刘海仍旧,但刘海减少 30% 变更为“药丸”,并引入灵动岛规划,经过刘海改换多种交互UI。视网膜 XDR2000 尼特峰值,实现息屏显现。运用新的 A16 4nm 芯片,搭载 4800 像素主摄像头,比 iPhone 13 Pro 大了 65%,新增配“灭霸紫”配色。

9月8日凌晨,苹果秋季发布会推出 iPhone14 系列产品,其间最大亮点为 iPhone14pro 系列新增正面规划“灵动岛”。正面摄像头有一个较小的切口,在不同状态下挖孔形状不同,支撑第三方运用。iPhone14 系列售价:iPhone14 5999元起,iPhone14plus 6999元起,iPhone14pro 7999元起,iPhone 14pro max 8999元起。9 月 9 日开端预售,9 月 16 日正式出售。

Swift 周报 第十三期

库克:苹果将捐款支撑四川地震灾区救援和重建工作

9 月 7 日音讯,苹果 CEO 蒂姆库克的认证微博发布音讯称:“咱们心系所有受地震影响的四川民众和社区。苹果将捐款支撑救援和重建工作。”

Swift 周报 第十三期

此前,小米、宁德时代、阿里巴巴、网易、字节跳动、联想、辛选集团、比亚迪、拼多多、理想汽车等都宣告向四川地震灾区进行捐献。

苹果为老款 iPhone / iPad / iPod 发布 iOS 12.5.6 更新,修正严重漏洞

IT之家 9 月 1 日音讯,苹果今日为老款 iPhone 发布了 iOS 12.5.6(内部版本号:16H71)更新,针对无法更新到 iOS 15 的设备进行了安全更新和过错修正。

这是自 2021 年 9 月以来苹果对 iOS 12 的初次更新,当时苹果修正了一个问题,该问题使恶意制造的 PDF、Web 内容和 App 能够履行代码。最新更新处理了自上次更新以来已在 iOS 15 中修补的漏洞。

IT之家了解到,苹果会针对无法更新到 iOS 12 之后的旧 iPhone、iPad 和 iPod 供给定时更新。这些更新不会供给任何严重的功用更改或 UI 改善,但会针对旧设备可能简单遭到的已知进犯供给维护。

苹果安全更新网站声明如下:

一位匿名研究人员提交的 CVE-2022-32893。

更新适用于:iPhone 5s、iPhone 6、iPhone 6 Plus、iPad Air、iPad mini 2、iPad mini 3 和 iPod touch(第 6 代)

影响:恶意制造的 Web 内容可能会履行恣意代码。有报告称此问题可能已被活跃运用。

描述:现已过改善边界检查处理越界写入问题。(来历: IT之家)

Swift 周报 第十三期

苹果 iOS 16 更新,气候 App 新功用盘点

IT之家 8 月 31 日音讯,苹果在 iOS 16 中对气候运用进行了一些改动,包含新的告诉类型,并增加了一些信息,从湿度、温度到能见度全方位为你供给服务。

此外,新版气候 App 中的许多新功用都融入了苹果此前收购的 Dark Sky 内容。

气候运用程序的全体规划没有严重更新,但苹果供给了更多信息。长期以来,气候运用一向都有一些小模块,然后向你显现各种信息,包含 10 天内预告、每日气温、空气质量、降水、紫外线指数、日落 / 日出时刻、风、湿度、感官温度、能见度和压力等等,现在你能够点击进入这些模块中的任何一个来获取更多信息,还支撑快速切换。

温度部分展现了全天的温度曲线图,包含最高和最低。这应该能够处理 iOS 15 气候运用中存在的一个问题,然后不会再有用户抱怨不清楚气温何时才是每日最低点。此外,这一部分还供给了气候状况的文本概述。在 10 天的气候预告中,你能够点击任何一天检查每日温度规模的图表,还有一个选项能够检查更大的彩色温度地图。

空气质量这块展现了您地点地区当时空气状况的图表,以及当时状况和首要污染物对健康影响的附加信息。此外,你还能够看到更大的空气质量地图,预计国内同样是由“和风气候”供给信息。

新的“降水”类似于之前版本的降水信息,显现了风暴将袭击的方位地图,还能够扩大显现 12 小时降雨预告,还有一个界面显现了过去 24 小时内的降水总量概况,以及在什么时刻下了多少雨、雨夹雪或雪。

感官温度供给了第二个温度图表,结合温度、湿度,风等一些其他因素,你能够更好地了解周围环境温度变化。

紫外线指数显现当时的紫外线等级和白日的最高紫外线水平。一起,它还会供给一段介绍,例如建议防晒等级。

“日落和日出”能够让你知道日出或日落的时刻,一起它还包含每月日出和日落的均匀值和总日光的读数。

“风”首要是供给每天的风速摘要,以及全天的风速、风向图表。

湿度部分显现了全天湿度的图表,分为六个小时的增量。它还供给均匀湿度和露点等信息。

“能见度”可供给全天的能见度规模,并供给每日摘要。

“压强”显现了当时的压强、全天压强,以及压强是上升仍是下降的读数。

“极点气候警报”和之前相同,会显现严重的暴雨、洪水、飓风、热浪、龙卷风等其他灾祸正告,预计国内仍是和风气候供给信息。

“气候锁屏”虽然不是气候运用程序的一部分,但在 iOS 16 中有一个专门的气候锁屏。如果是晴天,你会看到太阳,如果是雨天,你会看到下雨。

还有许多不同的气候小部件,你能够添加到任何锁屏中,还有一个更大的读数与温度,当时条件,高 / 低跟着单个空气质量,紫外线指数,和温度选项。

“iPad 气候”,跟着 iOS 16/ iPadOS 16 更新,终于有了适用于 iPad 的气候运用,比较 iPhone 版本能够更好地习惯 iPad 的大显现屏。

总归,iOS 16 更新了许多新奇的功用哦,小伙伴快去试试吧。(来历: IT之家)

提案

经过的提案

SE-0370 改善指针系列初始化和缓冲区 提案现已过。该提案已在十二期周报正在检查的提案模块做了具体介绍。

SE-0365 增加对协议 CustomDebugStringConvertible 到 AnyKeyPath 的一致性 提案现已过。该提案已在十二期周报正在检查的提案模块做了具体介绍。

SE-0368 StaticBigInt 提案现已过。该提案已在十一期周报正在检查的提案模块做了具体介绍。

回绝的提案

SE-0371 Isolated synchronous deinit 被回绝,重新修订。该提案已在十二期周报正在检查的提案模块做了具体介绍。

SE-0366 代码上下文新增灵敏关键字 move 被回绝,重新修订。该提案已在十一期周报正在检查的提案模块做了具体介绍。

正在检查的提案

SE-0372 更新稳定排序文档 提案正在检查。

Swift 的排序算法在 Swift 5 之前现已更改为稳定排序,可是文档一向没有更新。本提案致力于更新稳定的排序算法文档,便利开发者运用。

Swift论坛

  1. 评论 Automatic 类型的一致性

起点:

private func cachedImage(for path: String?) -> AnyPublisher<UIImage?, Never> {
    guard let path = path else {
        return Just(nil)
            .eraseToAnyPublisher()
    }
    if let image = imageCache.object(forKey: NSString(string: path)) {
        return Just(image)
            .eraseToAnyPublisher()
    }
    return image(for: path)
        .handleEvents(receiveOutput: { [weak imageCache] (image) in
            imageCache?.setObject(image, forKey: NSString(string: path))
        })
        .eraseToAnyPublisher()
}
.eraseToAnyPublisher()

被用到了许多次

把它提出来,写一个 Just 的 extension

extension Just: TypeConvertable {
    var convertable: AnyPublisher<Output, Never> {
        self.eraseToAnyPublisher()
    }
}

所以代码变得简练了许多

private func cachedImage(for path: String?) -> AnyPublisher<UIImage?, Never> {
    guard let path = path else {
        return Just(nil)
    }
    if let image = imageCache.object(forKey: NSString(string: path)) {
        return Just(image)
    }
    return image(for: path)
        .handleEvents(receiveOutput: { [weak imageCache] (image) in
             imageCache?.setObject(image, forKey: NSString(string: path))
        })
}

把例子变得通用一些

protocol TypeConvertable {
    associatedtype ReturnType
    var convertable: ReturnType { get }
}

当定义一个类型转变的时分,编译器应该能够决议对应的类型和相应的转变成果。 在这个例子中回来的类型是由给定类型决议的

  1. 评论 Xcode14 RC 不能序列化 protocol 类型
// ❌ Cannot specialize protocol type 'Collection'
extension Collection<MyType> { ... }
// ❌ Cannot specialize protocol type 'Sequence'
func foo(_ x: some Sequence<String>) { ... }

可能原因 macOS 12 SDK 仍然运用 Swift5.6,而不是 5.7. Swift 5.7 支撑:

  • 自定义 protocol 能够有 associated types。 参阅链接:github.com/apple/swift…
  • 在 protocol 里运用 associated type 要注意传入的类型与回来类型
  1. Swift coding style guide

一个很好的 swift style 总集文档:google.github.io/swift/#line…

  1. 评论 C++ Abstract Class Inheritance and C++-Interop (to Swift Protocols)

  2. 提问 如何处理空的网络回来值

能够参阅 Alamofire 的处理方法. 参阅链接: github.com/Alamofire/A… 当网络请求回来是空的时分能够判定为请求失败,一起检查回来代码是不是在 200~299 之间

关于咱们

Swift社区是由 Swift 爱好者共同维护的公益组织,咱们会共享以 Swift实战SwiftUlSwift根底为中心的技能内容,也收拾搜集优异的学习资料。

特别感谢 Swift社区 修改部的每一位修改,感谢我们的辛苦支付,为 Swift社区 供给优质内容,为 Swift 语言的发展奉献自己的力量。