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

Swift协议中associatedtype后=的含义解析——以ObservableObject为例

Swift关联类型默认值语法解析

你看到的= ObservableObjectPublisher是Swift 5.1新增的关联类型默认值语法,作用是给协议的关联类型指定一个默认实现类型,简化协议的使用流程。

具体到这段ObservableObject协议的代码:

  • 协议要求关联类型ObjectWillChangePublisher必须遵循Publisher协议,且Failure类型为Never
  • 加上= ObservableObjectPublisher后,所有遵循ObservableObject的类型,如果没有显式声明ObjectWillChangePublisher的具体类型,编译器会自动将其默认设为ObservableObjectPublisher

实际使用场景

1. 使用默认类型(最常见)

当你创建遵循ObservableObject的类时,无需额外声明关联类型,直接用默认的ObservableObjectPublisher即可,比如配合@Published属性使用:

class UserViewModel: ObservableObject {
    // 自动使用ObservableObjectPublisher作为objectWillChange的类型
    @Published var username: String = ""
    @Published var age: Int = 0
}

2. 自定义关联类型

如果有特殊需求,你也可以显式指定其他符合要求的Publisher类型(只要满足Publisher协议且Failure == Never),比如使用PassthroughSubject:

class CustomStateModel: ObservableObject {
    // 显式指定关联类型
    typealias ObjectWillChangePublisher = PassthroughSubject<Void, Never>
    
    let objectWillChange = PassthroughSubject<Void, Never>()
    
    var isLoading: Bool = false {
        willSet {
            objectWillChange.send()
        }
    }
}

内容的提问来源于stack exchange,提问作者kkklc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:20:26