You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

标记@MainActor的类,其扩展是否也归属主Actor?

关于@MainActor类的扩展归属问题

是的,当一个类被标记为@MainActor时,它的所有扩展默认都会归属于@MainActor上下文。

具体说明:

  • 在Swift中,类的@MainActor属性会被其所有扩展继承,扩展内的方法、属性、下标等成员默认都会绑定到主actor,即默认在主队列执行。
  • 对应示例:
    @MainActor class MyClass : NSObject
    {
    }
    
    // 该扩展默认归属于MainActor
    extension MyClass
    {
        func mainBoundMethod() {
            // 此方法默认在主队列执行
        }
    }
    

例外场景:

如果需要让扩展脱离@MainActor上下文,可以显式使用nonisolated修饰扩展,或者指定其他actor:

// 脱离MainActor的扩展
nonisolated extension MyClass {
    func nonMainMethod() {
        // 此方法不在主队列执行
    }
}

// 指定其他自定义actor的扩展
@CustomGlobalActor extension MyClass {
    func customActorMethod() {
        // 此方法在CustomGlobalActor指定的队列执行
    }
}

内容的提问来源于stack exchange,提问作者meaning-matters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 02:51:55