NOTE構文は2019年6月にはXCode 10.1スウィフト5用に更新されましたが(にクレジットここではマットの答え && ここ桐ファムの答えは、あなたが以前の構文を探している場合)、編集セクションを見てください。
はい、解決策を見つけました
まず、AppDelegate.swiftファイルの上部に次の行があることに気付きました。
@UIApplicationMain
この行はスコープの外(ファイルレベルにある)なので、すぐに実行され、コンパイラーが標準のメイン関数に変換すると想定しています。
そこで、新しいSwift-Onlyアプリケーションから始めて、これを行いました。
- コメントアウト
@UIApplicationMain
- このようなmain.swiftファイルを追加しました(FLApplicationは私のサブクラスです)。
重要トップレベルの文は、他のファイルでサポートされていないので、このファイルは、main.swift名前を付ける必要があります!他のファイル内にUIApplicationMain()呼び出しを追加することはできません。そうしないと、このエラーが発生します。
トップレベルでは式を使用できません
これはmain.swiftファイルです
UIApplicationMain(
CommandLine.argc, CommandLine.unsafeArgv,
NSStringFromClass(FLApplication.self), NSStringFromClass(AppDelegate.self)
)
次に、次のコードを使用して、UIApplicationサブクラスFLApplication.swiftのswiftファイルを作成します。
import UIKit
import Foundation
class FLApplication: UIApplication {
override func sendEvent(_ event: UIEvent) {
super.sendEvent(event)
print("send event")
}
}
現在、UIApplicationは正しくサブクラス化されており、ログに「イベントの送信」メッセージが表示されます
OLD EDITS
参考までに、これはバージョン1からバージョン3に大きく変更されたため、以前の編集はすべてここに残します。
編集-2015年3月
Hu UIApplicationMain
Junfengのコメントによると、main.swiftファイルに関する説明は、The Swift Language Reference:Linkの「Attributes」セクションに記載されています。
Thomas Verbeekによるコメントとして、XCode 6.3 Betaでは、C_ARGCとC_ARGVがそれぞれProcess.argcとProcess.unsafeArgvに名前が変更されていることに気付くかもしれません。main.swiftファイルのUIApplicationMain呼び出しは、次のように更新する必要があります。
UIApplicationMain(Process.argc, Process.unsafeArgv, NSStringFromClass(FLApplication), NSStringFromClass(AppDelegate))
XCode 8より前の構文は
import Foundation
import UIKit
UIApplicationMain(C_ARGC, C_ARGV, NSStringFromClass(FLApplication), NSStringFromClass(AppDelegate))
編集-2016年12月
Xcode 8、ベータ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()
クラス名を追加するよりも、パラメーターを変更するほうが望ましいのはなぜNSPrincipalClass
ですか?