Я пытаюсь сохранить список подписчиков, которые являются 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.