NOTA a sintaxe foi atualizado para XCode 10.1 e Swift 5 em junho de 2019 (créditos a resposta de Matt aqui && resposta de Tung Fam aqui ), se você está procurando as sintaxes anteriores olhar para a seção de edição.
Ok, eu encontrei a solução
Primeiro, notei que, no topo do arquivo AppDelegate.swift, há esta linha
@UIApplicationMain
Como essa linha está fora de qualquer escopo (está no nível do arquivo), ela é executada imediatamente e suponho que o compilador a traduza em uma função principal padrão.
Então, eu fiz isso, começando com um novo aplicativo apenas para Swift:
- comentado
@UIApplicationMain
- adicionei um arquivo main.swift como este (FLApplication é minha subclasse).
IMPORTANTE o arquivo DEVE SER NOMEADO main.swift, uma vez que as instruções de nível superior não são suportadas em outros arquivos! Você não pode adicionar a chamada UIApplicationMain () dentro de qualquer outro arquivo, caso contrário, receberá este erro:
Expressões não são permitidas no nível superior
Este é o arquivo main.swift
UIApplicationMain(
CommandLine.argc, CommandLine.unsafeArgv,
NSStringFromClass(FLApplication.self), NSStringFromClass(AppDelegate.self)
)
Em seguida, crie um arquivo swift para a subclasse UIApplication, FLApplication.swift, com este código:
import UIKit
import Foundation
class FLApplication: UIApplication {
override func sendEvent(_ event: UIEvent) {
super.sendEvent(event)
print("send event")
}
}
agora, UIApplication tem uma subclasse correta e você verá as mensagens de "evento de envio" no log
EDIÇÕES ANTIGAS
Para referência, já que isso mudou muito da versão 1 para a versão 3, deixo aqui todas as edições anteriores
EDITAR - MARÇO 2015
Conforme comentado por Hu Junfeng agora, as explicações sobre UIApplicationMaino arquivo main.swift estão documentadas na seção Atributos da Referência da Linguagem Swift: Link
Conforme comentado por Thomas Verbeek No XCode 6.3 Beta, você pode descobrir que C_ARGC e C_ARGV foram renomeados para Process.argc e Process.unsafeArgv respectivamente. Sua chamada UIApplicationMain no arquivo main.swift precisará ser atualizada para:
UIApplicationMain(Process.argc, Process.unsafeArgv, NSStringFromClass(FLApplication), NSStringFromClass(AppDelegate))
A sintaxe pré-XCode 8 era
import Foundation
import UIKit
UIApplicationMain(C_ARGC, C_ARGV, NSStringFromClass(FLApplication), NSStringFromClass(AppDelegate))
EDITAR - DEZ 2016
Solução para Xcode 8, antes do 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()parâmetros, em vez de adicionar o nome da classeNSPrincipalClassem app-info.plist?