Короткий ответ:
Чтобы быть в состоянии подкласса базового класса WDBaseViewController
должен быть определен как open
вместо public
в рамках используемого вами.
open class WDBaseViewController {
...
}
Если это внутренняя структура вы можете сделать это самостоятельно, в противном случае вам придется ждать, пока автор, чтобы поддержать Swift 3.
Длинный ответ:
Swift 3 приносит значительный изменения в управлении доступом.
Swift 2 только 3 уровня доступа:
private
: объекты доступны только в пределах исходного файла, в котором они определены.
internal
: объекты доступны для всего модуля, который включает определение.
public
: объекты предназначены для использования в качестве API и могут быть доступны любым файлом, который импортирует модуль.
Swift 3 добавляет еще 2 уровней доступа (open
и fileprivate
) и изменение значения private
:
private
: символ виден только в пределах текущей декларации.
fileprivate
: символ, видимый в текущем файле.
internal
: символ, видимый в текущем модуле.
public
: символ, видимый вне текущего модуля.
open
: для класса или функции, подлежащей подклассу или переопределенной за пределами текущего модуля.
Базовый класс 'WDBaseViewController' должен быть определен как' open', а не 'public' в используемой структуре. –
См. Также [Что такое ключевое слово 'open' в Swift?] (Http://stackoverflow.com/questions/38947101/what-is-the-open-keyword-in-swift) и Xcode 8 beta 6 Release Заметки. –
Да, я нашел его. Благодарю. –