繁体   English   中英

无法在Xcode 9.3 / Swift 4.1中创建仅限于类的协议

[英]Can't create protocol that is restricted to Classes in Xcode 9.3 / Swift 4.1

我正在尝试存储属于主题侦听器(主要是UIViews或UIViewControllers)的订户列表,我需要将它们存储在较弱的位置,否则UIViewControllers将永远不会释放,并且会发生内存泄漏。 我上了WeakRef课

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
{}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM