问题标签 [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.
swift - 编译器在编译多个文件时无限期挂起 - Swift 5.5 Release
正如问题所述,编译和运行下面的 2 个文件会使编译器无限期挂起。这是我尝试过的 CLI 命令:
swiftc *.swift -o combined && ./combined
和cat *.swift | swift -
.
目录中仅有的 2 个 swift 文件是main.swift
和Vehicle.swift
.
我试过分别编译和运行这两个文件,Vehicle.class
没有错误并且编译正确,main.swift
有error: cannot find 'Vehicle' in scope
错误,这是可以理解的,因为我需要一起编译它们。编译器没有其他反馈。什么会导致编译器挂起?
代码:
main.swift
车辆.swift
swift - 如何在 Swift 5.5 中通过另一个 Double 获得 Double 的力量?
长话短说,我需要得到x的y次方,它们都是双打的
问题是我一直得到 0
那么为什么会这样,我该如何让它真正起作用呢?
是的,这个计算适用于整数,只是第二个双打被添加到混合中,一切都崩溃了
ios - Swift 中的@MainActor 是什么?
只是@MainActor
语法糖DispatchQueue.main.async
还是有其他用途?
concurrency - 由于 Swift 5.5 并发更改导致基于 UIKit 的框架中的编译器错误
我注意到从 Swift 5.5 开始,一些基于 UI 的类改变了它们在处理并发方面的行为。我有一个特定的框架,它封装了一些 UIKit 功能/逻辑,并且我能够在没有任何警告的情况下构建框架,但是当我想在我的应用程序中使用该框架时,一些编译器警告会出现在“arm64-apple-ios”文件中。目前编译器错误发生在一些以闭包作为参数的初始化程序中。
这是一个小摘录:
任何想法如何解决这个问题?
swift - 如何在保持隔离的同时使 Swift Actor 符合协议?
假设我们有以下目标:
- 我们想使用演员。
- 我们想使用依赖注入并通过 DI 解析参与者。
- 我们希望将我们的参与者隐藏在接口后面,以便我们可以改变实现。
- 我们想要保持actor的隔离,否则使用actor就没有意义了。
所以具体的问题是:我们如何在保持隔离的同时使 Swift Actor 符合协议?
我可以让它编译…</p>
……但这似乎违背了目的。我也尝试过声明接口方法async
,但也没有编译。
我可以想到几种合理的解决方法,包括组合、nonisolated async
调用隔离方法的方法等,但想看看是否有我遗漏的东西。
swift - 添加中性泛型参数时,Swift“模棱两可的使用”
当我写:
一切都好。
但是当我写:
然后我在try await perform(body: body)
通话中出现“不明确地使用 'perform(body:)'”错误。
我试图理解为什么会这样。我明白了Int
,Decodable
这可能会导致歧义。但是后来我想知道为什么在我的第一个示例中没有发生这种情况。我怀疑引入另一种泛型类型会使候选函数的选择行为不同,即使该类型根本不涉及歧义。
是这样吗 ?作为奖励:有人能指出这个选择过程中涉及的 Swift 文档/源代码的入口点吗?
注意:我不是在寻找解决方法,已经解决了这个问题,我只是想了解底层机制。
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')
有任何想法吗?
ios - Swift 5.5:Async @objc didPullToRefresh 选择器使应用程序崩溃,并出现错误 EXC_BAD_ACCESS
我有一个添加了 refreshControl 的表,当我下拉刷新内容时,我重置了为表提供数据的数组,然后立即通过 API 调用请求新数据。
到目前为止,我一直使用完成处理程序和协议将数据放入表视图中,但由于网络调用和嵌套闭包金字塔所需的复杂性,我想将逻辑移动到异步/等待。
在 viewDidLoad 中填充视图可以正常工作,但使用 pullToRefresh 选择器时出现错误:
执行:
使应用程序崩溃的代码:
design-patterns - Swift 5.5+ 有属性观察器的本地语言/框架实现吗?
我目前正在赶上 Swift 的最新语言开发,将旧的 Objective-C 代码移植到 Swift 5.5/5.6。在搜索属性观察者模式时,我发现了大量令人困惑的旧方法,这些方法似乎可以追溯到以前的 Swift 版本。
然而,我没有发现对象属性的观察者模式的本机实现(例如本机的实现Codable
)。
因此,在我开始为我的对象手动添加自定义观察者模式之前。我的问题:
Swift 5.5/5.6 中是否有属性观察器的本地实现?
- 没有
@objc
- 没有
NSObject
- 不
NotificationCenter
- 没有委托模式,我需要一个允许多个观察者的模式。
一个虚构的例子来说明我对属性观察者模式的意思: