我使用斯威夫特2和使用WeakContainer作为一种存储一组弱的对象,就像NSHashTable.weakObjectsHashTable()
使用作为具体类型符合协议AnyObject不支持
struct WeakContainer<T: AnyObject> {
weak var value: T?
}
public protocol MyDelegate : AnyObject {
}
然后在我的ViewController,我声明
public var delegates = [WeakContainer<MyDelegate>]
但它是错误
使用MyDelegate作为具体类型符合协议的yObject不支持
我看到的错误是,WeakContainer
宣布为weak
value
成员,因此T
预期为对象。但我也宣布MyDelegate
为AnyObject
。如何解决这个问题?
哪里是错误实际上是在使用代码? “NSHashTable”有什么问题? – nhgrif
在协议声明中,如果将'AnyObject'更改为'class',它应该可以正常工作。不要问我解释不同之处。 – nhgrif
@nhgrif我试过'公共协议MyDelegate:类'之前,它不起作用 – onmyway133