bugfix> ios > 投稿

ThemeListeners(主に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を使用しようとすると、同じ問題が発生します。