In Ziel C war es einfach: Es war ausreichend, die Datei main.m zu aktualisieren und die Parameter UIApplicationMain () zu ändern
return UIApplicationMain(argc, argv, NSStringFromClass([CustomUIApplication class]), NSStringFromClass([AppDelegate class]));
Aber in Kürze gibt es keine main.m-Datei, da der Leitfaden sagt
"Code, der im globalen Bereich geschrieben wurde, wird als Einstiegspunkt für das Programm verwendet, sodass Sie keine Hauptfunktion benötigen."
Also, wie kann man UIApplication schnell unterordnen? Irgendein Vorschlag?
ios
cocoa-touch
swift
LombaX
quelle
quelle
UIApplicationMain()
Parameter zu ändern und den KlassennamenNSPrincipalClass
in der app-info.plist hinzuzufügen?Antworten:
Ok, ich habe die Lösung gefunden
Zuerst habe ich festgestellt, dass sich oben in der Datei AppDelegate.swift diese Zeile befindet
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:
@UIApplicationMain
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:
Dies ist die Datei main.swift
Erstellen Sie dann eine schnelle Datei für die UIApplication-Unterklasse FLApplication.swift mit folgendem Code:
Jetzt ist UIApplication korrekt in Unterklassen unterteilt und die Meldungen "Sendeereignis" werden im Protokoll angezeigt
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 dokumentiertWie 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:
Die Pre-XCode 8-Syntax war
EDIT - DEZ 2016
Lösung für Xcode 8 vor Beta 6
quelle
sendEvent:
heutzutage ist (ich erinnere mich, dass ich es in iOS 3 tun musste ...)UIApplicationMain
undmain.swift
im Abschnitt Attribute der Swift Language Reference dokumentiert ist. developer.apple.com/library/ios/documentation/Swift/Conceptual/…C_ARGC
undC_ARGV
wurden inProcess.argc
bzw.Process.unsafeArgv
umbenannt. Ihr UIApplicationMain-Aufruf in der Datei main.swift muss aktualisiert werden aufUIApplicationMain(Process.argc, Process.unsafeArgv, NSStringFromClass(KBApplication), NSStringFromClass(AppDelegate))
Eine Alternative besteht darin, es zu erweitern,
UIApplication
anstatt es zu unterklassifizieren. Laut dem von Apple veröffentlichten iBook können Erweiterungen in Swift:Wenn Ihre Anforderungen in der Unterklasse
UIApplication
durch diese Funktionen erfüllt werden, ist möglicherweise eine Erweiterung der richtige Weg.quelle
Erstellen Sie eine Unterklasse von
UIApplication
und fügen Sie Ihre Logik hinzuErstellen Sie eine
main.swift
Datei, die dieUIApplicationMain()
globale Funktion [Info] aufruft. Dies ist der neue Einstiegspunkt Ihrer Anwendung, der vom Betriebssystem aufgerufen wird. Diese Funktion empfängt Argumente von aufgerufenen Funktionen,UIApplication
Klassennamen undUIApplicationDelegate
Klassennamen und startet die Hauptlaufschleife.Entfernen / kommentieren Sie die
@UIApplicationMain
Anmerkung zum StandardAppDelegate
.@UIApplicationMain
erzeugtmain.swift
.Wenn Sie dies nicht tun, wird ein Kompilierungsfehler angezeigt:
quelle