演员和@MainActor有什么区别?

问题描述 投票:0回答:1

所以我一直在试图找出演员与@MainActor 的工作方式之间的区别?它们是针对同一问题的不同解决方案吗?我怎么知道该选哪一个?

actor AViewModel: ObservableObject {} 
@MainActor class AViewModel: ObservableObject {} 

他们对同一问题有不同的解决方案吗?我怎么知道该选哪一个?

我在网上找不到解决方案。

swift concurrency
1个回答
0
投票

MainActor
只是一个与主线程隔离的参与者。或者,正如文档所说,它是“一个单例参与者,其执行者相当于主调度队列。”

因此,当我们需要 actor 行为并且希望避免使用主线程时,我们会使用

actor
模式。当我们确实希望它使用主线程时,我们使用
MainActor

您给出了“视图模型”的示例。这通常是与我们应用程序的“视图”交互的对象,它始终需要位于主线程上。因此,视图模型是我们通常使用

@MainActor
模式的示例。事实上,Apple 在“发现 SwiftUI 中的并发”和“Swift 并发:更新示例应用程序”视频中明确建议我们这样做。 简而言之,如果您需要主线程,请使用@MainActor模式。在那些不需要明确位于主线程上的情况下,我们通常会使用

actor

模式。

    

© www.soinside.com 2019 - 2024. All rights reserved.