我注意到从 Swift 5.5 开始,一些基于 UI 的类改变了它们在处理并发方面的行为。我有一个特定的框架,它封装了一些 UIKit 功能/逻辑,并且我能够在没有任何警告的情况下构建框架,但是当我想在我的应用程序中使用该框架时,一些编译器警告会出现在“arm64-apple-ios”文件中。目前编译器错误发生在一些以闭包作为参数的初始化程序中。
这是一个小摘录:
@_Concurrency.MainActor(unsafe) public init(configurationForConnectingSceneSession: @escaping (UIKit.UIApplication, UIKit.UISceneSession, UIKit.UIScene.ConnectionOptions) -> UIKit.UISceneConfiguration = { _, connectingSceneSession, _ in
UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
/* COMPILER ERROR 1 -> Call to main actor-isolated initializer 'init(name:sessionRole:)' in a synchronous nonisolated context, COMPILER ERROR 2 -> Property 'role' isolated to global actor 'MainActor' can not be referenced from a non-isolated synchronous context*/
}, didDiscardSceneSessions: @escaping (UIKit.UIApplication, Swift.Set<UIKit.UISceneSession>) -> Oodin_Base.Executable = { _,_ in NoAction() })
任何想法如何解决这个问题?