我使用斯威夫特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