ПРИМІТКА.Синтаксис оновлено для XCode 10.1 та Swift 5 у червні 2019 року (титри на відповідь Метта тут && відповідь Tung Fam тут ), якщо ви шукаєте попередні синтаксиси, дивіться у розділі редагування.
Гаразд, я знайшов рішення
По-перше, я помітив, що у верхній частині файлу 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, з таким кодом:
import UIKit
import Foundation
class FLApplication: UIApplication {
override func sendEvent(_ event: UIEvent) {
super.sendEvent(event)
print("send event")
}
}
тепер UIApplication правильно підкласифіковано, і ви побачите повідомлення "відправити подію" в журналі
СТАРІ РЕДАКТИ
Для довідки, оскільки це сильно змінилося з версії 1 на версію 3, я залишаю тут усі попередні редагування
РЕДАКТУВАТИ - БЕРЕЗЕНЬ 2015
Як зауважив Ху Цзюньфен, пояснення щодо UIApplicationMain
файлу main.swift та документа main.swift задокументовані в розділі "Атрибути" Довідника мови Swift: Посилання
Як прокоментував Томас Вербек У бета-версії XCode 6.3, ви можете виявити, що C_ARGC та C_ARGV були перейменовані на Process.argc та Process.unsafeArgv відповідно. Ваш виклик UIApplicationMain у файлі main.swift потребуватиме оновлення до:
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
Рішення для 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
в app-info.plist?