问题标签 [swift5.5]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
30 浏览

swift - 编译器在编译多个文件时无限期挂起 - Swift 5.5 Release

正如问题所述,编译和运行下面的 2 个文件会使编译器无限期挂起。这是我尝试过的 CLI 命令: swiftc *.swift -o combined && ./combinedcat *.swift | swift -.

目录中仅有的 2 个 swift 文件是main.swiftVehicle.swift.

我试过分别编译和运行这两个文件,Vehicle.class没有错误并且编译正确,main.swifterror: cannot find 'Vehicle' in scope错误,这是可以理解的,因为我需要一起编译它们。编译器没有其他反馈。什么会导致编译器挂起?

代码:

main.swift

车辆.swift

0 投票
1 回答
44 浏览

swift - 如何在 Swift 5.5 中通过另一个 Double 获得 Double 的力量?

长话短说,我需要得到xy次方,它们都是双打的

问题是我一直得到 0

那么为什么会这样,我该如何让它真正起作用呢?

是的,这个计算适用于整数,只是第二个双打被添加到混合中,一切都崩溃了

0 投票
1 回答
135 浏览

ios - Swift 中的@MainActor 是什么?

只是@MainActor语法糖DispatchQueue.main.async还是有其他用途?

0 投票
1 回答
61 浏览

concurrency - 由于 Swift 5.5 并发更改导致基于 UIKit 的框架中的编译器错误

我注意到从 Swift 5.5 开始,一些基于 UI 的类改变了它们在处理并发方面的行为。我有一个特定的框架,它封装了一些 UIKit 功能/逻辑,并且我能够在没有任何警告的情况下构建框架,但是当我想在我的应用程序中使用该框架时,一些编译器警告会出现在“arm64-apple-ios”文件中。目前编译器错误发生在一些以闭包作为参数的初始化程序中。

这是一个小摘录:

任何想法如何解决这个问题?

0 投票
0 回答
14 浏览

clean-architecture - 如何将测试从 Xcode App 项目移动到它自己的项目

在 Xcode 13.2 中,我使用 Xcode Workspace 安排了我的应用程序项目,到目前为止,我以简洁的架构风格实现了更好的分离。但是,我无法弄清楚如何将测试从 App 项目移动到单独的测试项目。请看屏幕,看看我试图完成什么。通过添加 Persistence 依赖项可以轻松测试 Persistence 项目。该应用程序,但是,我找不到将其添加为测试项目中的依赖项的方法。

有谁知道如何完成将 App 测试移动到 Tests 项目?

项目结构

0 投票
1 回答
64 浏览

swift - 如何在保持隔离的同时使 Swift Actor 符合协议?

假设我们有以下目标:

  1. 我们想使用演员。
  2. 我们想使用依赖注入并通过 DI 解析参与者。
  3. 我们希望将我们的参与者隐藏在接口后面,以便我们可以改变实现。
  4. 我们想要保持actor的隔离,否则使用actor就没有意义了。

所以具体的问题是:我们如何在保持隔离的同时使 Swift Actor 符合协议?

我可以让它编译…</p>

……但这似乎违背了目的。我也尝试过声明接口方法async,但也没有编译。

我可以想到几种合理的解决方法,包括组合、nonisolated async调用隔离方法的方法等,但想看看是否有我遗漏的东西。

0 投票
0 回答
43 浏览

swift - 添加中性泛型参数时,Swift“模棱两可的使用”

当我写:

一切都好。

但是当我写:

然后我在try await perform(body: body)通话中出现“不明确地使用 'perform(body:)'”错误。

我试图理解为什么会这样。我明白了IntDecodable这可能会导致歧义。但是后来我想知道为什么在我的第一个示例中没有发生这种情况。我怀疑引入另一种泛型类型会使候选函数的选择行为不同,即使该类型根本不涉及歧义。

是这样吗 ?作为奖励:有人能指出这个选择过程中涉及的 Swift 文档/源代码的入口点吗?

注意:我不是在寻找解决方法,已经解决了这个问题,我只是想了解底层机制。

0 投票
2 回答
41 浏览

ios - 如何在 SwiftUI / Swift5.5 中以编程方式从 Xcode 13 获取资产目录颜色变体?

我在 Xcode 13 中有一个颜色资产目录,它定义了一组浅色(“Any”)和深色(“Dark”)变体的颜色。例如:

资产目录颜色的图片

我想以编程方式枚举不同的颜色,意思是,我想获得Color("hkMagenta")两种变体中的颜色()。仅按名称获取它会返回“任何”变体。

我怎样才能得到黑暗的变种?

我原以为这会起作用:

ColorManager.hkMagenta.environment(\.colorScheme, .dark)

不幸的是,没办法...

Cannot convert value of type 'some View' to expected element type 'Array<Color>.ArrayLiteralElement' (aka 'Color')

有任何想法吗?

0 投票
1 回答
23 浏览

ios - Swift 5.5:Async @objc didPullToRefresh 选择器使应用程序崩溃,并出现错误 EXC_BAD_ACCESS

我有一个添加了 refreshControl 的表,当我下拉刷新内容时,我重置了为表提供数据的数组,然后立即通过 API 调用请求新数据。

到目前为止,我一直使用完成处理程序和协议将数据放入表视图中,但由于网络调用和嵌套闭包金字塔所需的复杂性,我想将逻辑移动到异步/等待。

在 viewDidLoad 中填充视图可以正常工作,但使用 pullToRefresh 选择器时出现错误:

执行:

使应用程序崩溃的代码:

0 投票
0 回答
4 浏览

design-patterns - Swift 5.5+ 有属性观察器的本地语言/框架实现吗?

我目前正在赶上 Swift 的最新语言开发,将旧的 Objective-C 代码移植到 Swift 5.5/5.6。在搜索属性观察者模式时,我发现了大量令人困惑的旧方法,这些方法似乎可以追溯到以前的 Swift 版本。

然而,我没有发现对象属性的观察者模式的本机实现(例如本机的实现Codable)。

因此,在我开始为我的对象手动添加自定义观察者模式之前。我的问题:

Swift 5.5/5.6 中是否有属性观察器的本地实现?

  • 没有@objc
  • 没有NSObject
  • NotificationCenter
  • 没有委托模式,我需要一个允许多个观察者的模式。

一个虚构的例子来说明我对属性观察者模式的意思: