无法在 Xcode 9.3 / Swift 4.1 中创建仅限于 类 的协议
Can't create protocol that is restricted to Classes in Xcode 9.3 / Swift 4.1
我正在尝试存储订阅者列表,这些订阅者是 ThemeListeners(主要是 UIViews 或 UIViewControllers),我需要弱存储它们,否则 UIViewControllers 永远不会被释放,我会发生内存泄漏。
我从
中获取了 WeakRef class
https://marcosantadev.com/swift-arrays-holding-elements-weak-references/
当我将它放入我的项目并尝试编译它时,我在 Xcode 9.3 的最后一行出现错误:
'WeakRef' requires that 'ThemeListener' be a class type
在 Xcode 9.2 中进行编译。
class WeakRef<T> where T:AnyObject
{
private(set) weak var value : T?
init( value:T?)
{
self.value = value
}
}
protocol ThemeListener : AnyObject
{
}
typealias WeakRefThemeListener = WeakRef<ThemeListener>
有没有人对如何解决这个问题有任何建议。我在尝试使用 NSHashTable 时也遇到了同样的问题。
我觉得你的协议应该是这样的:
protocol ThemeListener : class
{}
我正在尝试存储订阅者列表,这些订阅者是 ThemeListeners(主要是 UIViews 或 UIViewControllers),我需要弱存储它们,否则 UIViewControllers 永远不会被释放,我会发生内存泄漏。 我从
中获取了 WeakRef classhttps://marcosantadev.com/swift-arrays-holding-elements-weak-references/
当我将它放入我的项目并尝试编译它时,我在 Xcode 9.3 的最后一行出现错误:
'WeakRef' requires that 'ThemeListener' be a class type
在 Xcode 9.2 中进行编译。
class WeakRef<T> where T:AnyObject
{
private(set) weak var value : T?
init( value:T?)
{
self.value = value
}
}
protocol ThemeListener : AnyObject
{
}
typealias WeakRefThemeListener = WeakRef<ThemeListener>
有没有人对如何解决这个问题有任何建议。我在尝试使用 NSHashTable 时也遇到了同样的问题。
我觉得你的协议应该是这样的:
protocol ThemeListener : class
{}