#ios #swift #macos #swift5 #xcode12
#iOS #swift #macos #swift5 #xcode12
Вопрос:
Окружающая среда, Swift 5.3 и Xcode 12
Обычно мы someObject.delegate = self
устанавливаем текущий класс в качестве делегата для некоторого экземпляра класса. Однако внутри AppDelegate
нет такого назначения, чтобы сделать его делегатом приложения.
import Cocoa
@main
class AppDelegate: NSObject, NSApplicationDelegate {
func applicationDidFinishLaunching(_ aNotification: Notification) {}
func applicationWillTerminate(_ aNotification: Notification) {}
}
Итак, где delegate
устанавливается свойство приложения?
Ответ №1:
@UIApplicationMain
атрибут означает, что этот класс является делегатом приложения, https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID589 .
Это то же самое, что и вызов UIApplicationMain(:,:,:,:)
. Если атрибут НЕ используется, укажите main.swift
файл с кодом на верхнем уровне, который вызывает UIApplicationMain(:,:,:,:)
(также применимо к NSApplication
).
Добавление @main
, похоже, имеет тот же эффект, @UIApplicationMain
что и . Замените @main
на @UIApplicationMain
, и приложение работает просто отлично, проверено.