HINWEIS Die Syntax ist für XCode 10.1 und Swift 5 Juni 2019 (Gutschriften aktualisiert matt Antwort hier && Tung Fam Antwort hier ), wenn Sie für die vorherigen Syntaxen suchen Blick auf die Edit - Sektion.
Ok, ich habe die Lösung gefunden
Zuerst habe ich festgestellt, dass sich oben in der Datei AppDelegate.swift diese Zeile befindet
@UIApplicationMain
Da diese Zeile außerhalb eines Bereichs liegt (auf Dateiebene), wird sie sofort ausgeführt, und ich gehe davon aus, dass der Compiler sie in eine Standardhauptfunktion übersetzt.
Also habe ich dies ausgehend von einer neuen Swift-Only-Anwendung getan:
- auskommentiert
@UIApplicationMain
- hat eine main.swift-Datei wie diese hinzugefügt (FLApplication ist meine Unterklasse).
WICHTIG, die Datei muss main.swift NAMED sein, da Anweisungen der obersten Ebene in anderen Dateien nicht unterstützt werden! Sie können den UIApplicationMain () -Aufruf in keiner anderen Datei hinzufügen, andernfalls wird folgende Fehlermeldung angezeigt:
Ausdrücke sind auf der obersten Ebene nicht zulässig
Dies ist die Datei main.swift
UIApplicationMain(
CommandLine.argc, CommandLine.unsafeArgv,
NSStringFromClass(FLApplication.self), NSStringFromClass(AppDelegate.self)
)
Erstellen Sie dann eine schnelle Datei für die UIApplication-Unterklasse FLApplication.swift mit folgendem Code:
import UIKit
import Foundation
class FLApplication: UIApplication {
override func sendEvent(_ event: UIEvent) {
super.sendEvent(event)
print("send event")
}
}
Jetzt ist UIApplication korrekt in Unterklassen unterteilt und die Meldungen "Sendeereignis" werden im Protokoll angezeigt
ALTE BEARBEITUNGEN
Als Referenz, da sich dies von Version 1 zu Version 3 stark geändert hat, lasse ich hier alle vorherigen Änderungen
EDIT - MÄRZ 2015
Wie von Hu Junfeng kommentiert, sind jetzt die Erklärungen zu UIApplicationMain
und die Datei main.swift im Abschnitt Attribute von The Swift Language Reference: Link dokumentiert
Wie von Thomas Verbeek kommentiert In der XCode 6.3 Beta stellen Sie möglicherweise fest, dass C_ARGC und C_ARGV in Process.argc bzw. Process.unsafeArgv umbenannt wurden. Ihr UIApplicationMain-Aufruf in der Datei main.swift muss aktualisiert werden auf:
UIApplicationMain(Process.argc, Process.unsafeArgv, NSStringFromClass(FLApplication), NSStringFromClass(AppDelegate))
Die Pre-XCode 8-Syntax war
import Foundation
import UIKit
UIApplicationMain(C_ARGC, C_ARGV, NSStringFromClass(FLApplication), NSStringFromClass(AppDelegate))
EDIT - DEZ 2016
Lösung für Xcode 8 vor Beta 6
import Foundation
import UIKit
UIApplicationMain(
CommandLine.argc,
UnsafeMutableRawPointer(CommandLine.unsafeArgv)
.bindMemory(
to: UnsafeMutablePointer<Int8>.self,
capacity: Int(CommandLine.argc)),
NSStringFromClass(FLApplication.self),
NSStringFromClass(AppDelegate.self)
)
UIApplicationMain()
Parameter zu ändern und den KlassennamenNSPrincipalClass
in der app-info.plist hinzuzufügen?