Swift 将符合AnyObject协议的对象传递到需要AnyObject的泛型

Swift 将符合AnyObject协议的对象传递到需要AnyObject的泛型,swift,generics,Swift,Generics,假设此代码: protocol Test: AnyObject {} class RealTest: Test {} class Wrapper<A: AnyObject> { weak var value: A? init(_ value: A) { self.value = value } } let realTest = RealTest() let wrapper = Wrapper(realTest) 我收到了错误信息 泛型

假设此代码:

protocol Test: AnyObject {}
class RealTest: Test {}


class Wrapper<A: AnyObject> {
    weak var value: A?
    init(_ value: A) {
         self.value = value
    }
}

let realTest = RealTest()
let wrapper = Wrapper(realTest)
我收到了错误信息

泛型类“包装器”要求“测试”是类类型


是否有解决方案,因为我需要AnyObject要求,并且我只知道对象符合的协议?

协议不符合自身(或任何协议)。只有具体类型才能符合协议

如果您只需要知道这个类型是一个类(AnyObject),那么在这里您不需要泛型,您只需要传递协议类型本身(技术上是“存在的”)


如果您出于其他原因需要此处的泛型,那么泛型必须位于具体类型之上,而不是协议之上。

嘿,谢谢您的评论。我已经过度简化了我的代码,sry就是这样。包装器包含对该值的弱引用,因此最好有一个泛型,这样在访问该值时就不需要强制转换。我已经更新了代码示例来反映这一点。这很好,但是类型必须是具体的,而不是协议。您不能有
包装器
。Swift没有任何方法来构建它。好吧,我无法使协议具体化,因为我将失去拥有协议的所有好处。好的,谢谢,我需要想出另一个解决方案:)
let realTest: Test = RealTest()
class Wrapper {
    let value: AnyObject
    init(_ value: AnyObject) {
         self.value = value
    }
}