Как показывает ошибка, вам нужно вернуть Self
здесь, если класс не является окончательным.
@objc override public class func sharedInstance() -> Self { return _sharedInstance }
(Предполагается, что _sharedInstance
имеет тип Self
.)
Кроме того, вы можете изменить суперкласс, чтобы он не возвращал Self
, а вместо этого возвращать определенный тип (вероятно, его собственный тип).
@objc public class func sharedInstance() -> TheActualClass { return _sharedInstance }
(В этом случае все подклассы также должны возвращать TheActualClass. Я предполагаю, что классом является AWSMobileClient.)
Поскольку это фреймворк, я ожидаю, что поставщик исправит его, и я бы позаботился о том, чтобы у вас была самая последняя версия фреймворка.
Self
указывает, что этот метод возвращает значение типа вызываемого класса. Так что если у вас есть SomeClass.sharedInstance()
, вы должны вернуть SomeClass
. Но если вы сделаете это подклассом, то вызов SubClass.sharedInstance()
должен вернуть SubClass
. Если вы не можете этого добиться, вам нужно сделать что-то окончательное или не вернуть Self
.
Однако это очень странное переопределение. Непонятно, чего пытается достичь этот код.