gpt4 book ai didi

swift - 从泛型类快速继承是否会阻止通过扩展实现协议(protocol)一致性?

转载 作者:可可西里 更新时间:2023-11-01 01:31:12 26 4
gpt4 key购买 nike

@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() { }
}

-> 类型“B”不符合协议(protocol)“P2”。

为什么?删除泛型解决了这个错误,但我不明白 - 此时 B 应该是一个完全特定的类型......

最佳答案

它是@objc 和泛型的组合。 Objective-C 对 Swift 泛型一无所知,因此您认为 B 应该采用 @objc 协议(protocol)的想法会导致编译器出现问题。

您已经从一个方向检测到这一点;你同样可以从对方身上看到它。您可以通过删除 @objc 属性来编译代码。或者您可以通过删除通用使其编译。你不能同时拥有两者。

关于swift - 从泛型类快速继承是否会阻止通过扩展实现协议(protocol)一致性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39297173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com