У меня есть подкласс NSDocumentController
, который должен знать, восстановил ли он какие-либо окна по протоколу NSWindowRestoration
.
Конкретная функция, которую я переопределяю, задокументирована здесь ,сделать это:
override open static func restoreWindow(withIdentifier identifier: NSUserInterfaceItemIdentifier, state: NSCoder, completionHandler: @escaping (NSWindow?, Error?) -> Void)
Как написано, эта функция вызывается именно тогда, когда я хотел бы, и работает отлично.Тем не менее, я получаю следующее предупреждение:
Static declarations are implicitly 'final'; use 'public' instead of 'open'
Это предупреждение включает в себя, казалось бы, полезное исправление, чтобы преобразовать это open
в public
.Но когда я принимаю, я получаю эту ошибку:
Overriding static method must be as accessible as the declaration it overrides
Эта ошибка говорит о том, что я заменяю public
на open
.
Я открыл радар с Apple по этому поводукруговое поведение.Но я бы очень хотел найти способ успокоить это предупреждение.В качестве альтернативы, возможно, есть другой способ для подкласса NSDocumentController сообщить, что он восстановил окна.
Чтобы воспроизвести эту ошибку, создайте новый проект приложения с Xcode 10 и включите следующий код.Я просто бросил его после объявления AppDelegate
.По умолчанию проект настроен на Swift 4.2 и собирается для macOS 10.14.
class MyDocumentController: NSDocumentController {
override open static func restoreWindow(withIdentifier identifier: NSUserInterfaceItemIdentifier, state: NSCoder, completionHandler: @escaping (NSWindow?, Error?) -> Void) {
super.restoreWindow(withIdentifier: identifier, state: state, completionHandler: completionHandler)
}
}