Swift 5.7中使用协议作为类型时,何时需书写`any`关键字?
Swift中协议作为类型时必须写
any的具体条件是什么? 我发现以下几种情况的代码表现不同:
- 无继承的协议作为可选类型声明时,不会报错:
protocol Foo{ func foo() } let x: Foo? = nil
- 继承自
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'
- 直接继承自
AnyObject的协议作为可选类型声明时,又不会报错:
protocol Foo: AnyObject{ func foo() } let x: Foo? = nil
由于ObservableObject本身继承自AnyObject,我产生了疑问:使用协议作为类型时,必须书写any的具体条件是什么?
内容的提问来源于stack exchange,提问作者Ricky Mo
相关产品推荐
相关产品推荐

