Объявление массива протоколов со слабыми ссылками в Swift дает ошибку: «Слабый» требует, чтобы «любой LocationSendingDelIOS

Программируем под IOS
Ответить
Anonymous
 Объявление массива протоколов со слабыми ссылками в Swift дает ошибку: «Слабый» требует, чтобы «любой LocationSendingDel

Сообщение Anonymous »

Мне нужно сохранить массив протоколов со слабыми ссылками.
Мой код:

Код: Выделить всё

class Weak {
weak var value: T?
init (_ value: T) {
self.value = value
}
}

protocol LocationSendingDelegate : AnyObject {
func sendLocation(_ location: CLLocation)
}

private var locationSendingDelegates : [Weak] = [] // this line gives compiler error
Последняя строка выдает ошибку компилятора:

Код: Выделить всё

'Weak' requires that 'any LocationSendingDelegate' be a class type
Обратите внимание, что если я избавлюсь от дженериков и объявлю:
class WeakLocationDelegate {
weak var value: LocationSendingDelegate?
init(_ value: LocationSendingDelegate) {
self.value = value
}

Тогда это отлично работает:
private var locationSendingDelegates : [WeakLocationDelegate] = []
Как я могу сделать это с помощью дженериков?
РЕДАКТИРОВАТЬ:
Похоже, кто-то еще столкнулся с этой проблемой, но она не была решена:
Общий массив слабых ссылок на класс связанный протокол в Swift 4.1

Подробнее здесь: https://stackoverflow.com/questions/797 ... r-weak-req
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»