Создание дженериков с типом протокола делегата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

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