可以在协议中声明嵌套类型,如下所示:
protocol nested{ class nameOfClass { var property: String { get set } } }
Xcode表示“类型不允许在这里”,所以,如果我想创建一个需要嵌套类型的协议,这是不可能的,或者我可以这样做吗?
协议不需要嵌套类型,但它可能需要符合另一协议的关联类型.实现可以使用嵌套类型或类型别名来满足此要求.
protocol Inner { var property: String { get set } } protocol Outer { associatedtype Nested: Inner } class MyClass: Outer { struct Nested: Inner { var property: String = "" } } struct NotNested: Inner { var property: String = "" } class MyOtherClass: Outer { typealias Nested = NotNested }