@objc public protocol P1 {
func p1foo()
}
@objc public protocol P2 {
func p2foo()
}
class A<T>: NSObject, P1 {
func p1foo() { }
}
class B: A<Int> {
}
extension B: P2 {
func p2foo() { }
}
- &GT;类型'B'不符合协议'P2'。
为什么呢?删除泛型解决了这个错误,但我不明白 - 此时B应该是一个完全特定的类型......
答案 0 :(得分:2)
这是@objc
和通用的组合。 Objective-C对Swift泛型一无所知,所以B你应该采用@objc
协议的概念会导致编译器抖动。
你已经从一个方向检测到了这个;你可以从另一个看到它。您可以通过删除@objc
属性来编译代码。或者你可以通过删除泛型来编译它。你不能同时拥有这两个。