Я пытался поиграть со Swift 3, но не могу начать. Следующий код компилируется, но ничего не регистрирует. Похоже, applicationDidFinishLaunching
не звонят. Я упустил здесь какую-то важную деталь?
Sources / main.swift :
import AppKit
class AppDelegate: NSObject, NSApplicationDelegate {
func applicationDidFinishLaunching(aNotification: NSNotification) {
NSLog("application start")
}
}
NSApplication.shared()
NSApp.setActivationPolicy(.regular)
let controller = AppDelegate()
NSApp.delegate = controller
NSApp.run()
P.s. Есть аналогичный вопрос о том, что applicationDidFinishLaunching
вызывается, но ничего не печатает. Я считаю, что это не так, поскольку использование window.orderFrontRegardless()
вместо ведения журнала также не имеет для меня никакого эффекта.
System Version: OS X 10.11.6
> swift --version
Apple Swift version 3.0 (swiftlang-800.0.43.6 clang-800.0.38)
Target: x86_64-apple-macosx10.9
3 ответа
Если вы хотите реализовать протоколы Objective-C в Swift 3, вам нужно использовать _
, указывающее, что метод не имеет метки для первого параметра.
func applicationDidFinishLaunching(_ aNotification: Notification) {
(ОБНОВИТЬ)
Извините, в моем первом коде я забыл заменить NSNotification
на Notification
. (Спасибо, Лео Дабус.)
Строка, в которой вы ссылаетесь, но не используете NSApplication.shared
, выглядит опечаткой. Если вы замените его на NSApp = NSApplication.shared
и убедитесь, что подпись метода в AppDelegate верна, он должен работать.
Есть аналогичная проблема, когда {{X 0}} не получал вызов.
Для меня проблема заключалась в том, что App Delegate ссылается на точку .
Решение. Просто удалите его, а затем снова подключите, и проблема решена.
Вот как вы можете воссоздать соединение
Похожие вопросы
Новые вопросы
swift
Swift — это язык программирования общего назначения, разработанный Apple Inc., впервые выпущенный в 2014 году для своих платформ и Linux. Swift имеет открытый исходный код. Используйте тег только для вопросов о языковых функциях или необходимости кода в Swift. Используйте теги [ios], [ipados], [macos], [watch-os], [tvos], [swiftui], [cocoa-touch] и [cocoa] для (не зависящих от языка) вопросов о платформах или рамки.