我很好奇,为什么我会得到这个错误:
如果我声明只有对象才能符合协议:
public protocol DayViewStateUpdating: AnyObject {
func move(from oldDate: Date, to newDate: Date)
}
然后尝试示例化该协议的NSHashTable
:
private var clientsHashTable = NSHashTable<DayViewStateUpdating>.weakObjects()
我收到错误消息:
“NSHashTable”要求“any DayViewStateUpdating”是类类型
但是any DayViewStateUpdating保证是一个类类型,因为它之前被声明为AnyObject。还是我错过了什么?
在上下文中的文件的源代码:DayViewState
1条答案
按热度按时间wnvonmuf1#
NSHashTable
需要的是C2C风格的协议,而不是Swift风格的协议存在。将您的协议标记为
@objc protocol DayViewStateUpdating
可以正常工作。但实际上,您可以在这里不需要
NSHashTable
,通过使用Weak
Package 器,如下所示: