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

Swift 5.7中使用协议作为类型时,何时需书写`any`关键字?

Swift中协议作为类型时必须写any的具体条件是什么?

我发现以下几种情况的代码表现不同:

  1. 无继承的协议作为可选类型声明时,不会报错:
protocol Foo{
    func foo()
}

let x: Foo? = nil
  1. 继承自ObservableObject的协议作为可选类型声明时,会提示错误Use of protocol 'Foo' as a type must be written 'any Foo':
protocol Foo: ObservableObject{
    func foo()
}

let x: Foo? = nil      //Use of protocol 'Foo' as a type must be written 'any Foo'
  1. 直接继承自AnyObject的协议作为可选类型声明时,又不会报错:
protocol Foo: AnyObject{
    func foo()
}

let x: Foo? = nil

由于ObservableObject本身继承自AnyObject,我产生了疑问:使用协议作为类型时,必须书写any的具体条件是什么?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 09:12:35