Swift - self.init () в методе класса не создает правильный тип - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть иерархия классов, где ClassB наследуется от ClassA

Статическая переменная solitaire определена для ClassA

static var solitaire: ClassA!

Функция класса createdSolitaire() определенаClassA

class func createSolitaire() {

  solitaire = self.init()
}

Когда я звоню ClassB.createSolitaire(), переменная solitaire устанавливается на экземпляр ClassA, а не ClassB.

Что я здесь не так делаю?Спасибо.

Код:

class ClassA {

static var shared: ClassA!

class func createSolitaire() {
    shared = self.init()
} 
}

class ClassB : ClassA {
}

Чтобы воспроизвести проблему, вызовите ClassB.createSolitaire () откуда угодно ... например, метод PlayGround или viewLoaded в viewController.

1 Ответ

0 голосов
/ 30 сентября 2018

Благодаря комментарию Мартина Р. я нашел исправление:

Я просто добавил пустой метод init () в ClassA с помощью «required», и теперь self.init () возвращает правильный объект (экземплярClassB, а не ClassA, в моем примере).Несколько тревожно, что это исправило, но что угодно.

т.е.

требуется init () {}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...