Создание дженериков с типом протокола делегатаIOS

Программируем под IOS
Ответить
Anonymous
 Создание дженериков с типом протокола делегата

Сообщение Anonymous »

Я пытаюсь провести рефакторинг этого кода:

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

@objc protocol BaseDelegate {
func xxx()
}

protocol DerivedDelegate: BaseDelegate {
func yyy()
}

protocol NextDerivedDelegate: BaseDelegate {
func zzz()
}

class BaseClass {
var delegate: T?
}

class DerivedClass: BaseClass {
....
}

class NextDerivedClass: BaseClass {
....
}
Как вы уже можете заметить, помимо прочего, здесь есть утечка памяти. Поэтому я пытаюсь его реорганизовать, но безуспешно. Вот что у меня сейчас есть:

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

@objc protocol BaseDelegate: AnyObject {
func xxx()
}

protocol DerivedDelegate: BaseDelegate {
func yyy()
}

protocol NextDerivedDelegate: BaseDelegate {
func zzz()
}

class BaseClass {
weak var delegate: T?
}

class DerivedClass: BaseClass {
....
}

class NextDerivedClass: BaseClass {
....
}
Но когда я попытался его построить, он выдал следующую ошибку:

Тип «любой DerivedDelegate» не может соответствовать 'BaseDelegate'

Даже когда я пробовал класс DerivedClass: BaseClass, он возвращал Тип 'любой BaseDelegate' не может соответствовать 'BaseDelegate' . Есть ли способ это исправить? Таких классов и делегатов много, поэтому менять их один за другим и удалять дженерики — последнее, что нужно делать, если есть другое решение.
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/787 ... tocol-type
Ответить

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

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

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

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

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