2014-06-06 5 views
8

Qualcuno conosce la sequenza di avvio di un'app rapida ?. Come posso vedere non c'è la funzione main in un'applicazione rapida. Quindi chi è responsabile di ciòSequenza di avvio dell'app Swift

// Entry point of a normal iOS app 
int main(int argc, char * argv[]) 
{ 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
    } 
} 

L'oggetto dell'applicazione e AppDelegate vengono creati qui. Ma per un'applicazione rapida mi chiedevo chi le stia creando.

Se qualcuno lo sa, condividi i tuoi pensieri.

risposta

7

la rapida Libro dice:

Il codice scritto in ambito globale viene utilizzato come punto di ingresso per il programma, in modo da non avete bisogno di una funzione principale.

Se si dispone di uno sguardo alla vostra AppDelegate c'è un marcatore @UIApplicationMain che è al di fuori di qualsiasi ambito e considerato come punto di ingresso.

+0

Ya .. ho visto che. ma non sono sicuro del '@ UIApplicationMain'. niente documenti! –

+2

Trovate altre informazioni qui http://stackoverflow.com/a/24021180/1873085 – Daniel

10

Se si guarda la classe AppDelegate.Swift, è disponibile l'istruzione @UIApplicationMain scritta nell'area globale del file. Come @Daniel menziona anche nella sua risposta.

Ora ho provato commentando che la linea e la compilazione del codice, guarda cosa ho ottenuto ..

enter image description here

Nel linguaggio molto semplice, errore di dire compilatore tentativo per cercare implicit entry/start for main executable, ma non sempre.

mostra la dichiarazione @UIApplicationMain in AppDelegate.Swift crea un punto di ingresso implicito per il programma Swift.

E ho provato a scrivere la classe main.swift in modo esplicito ... funziona.

mia main.swift assomiglia ..

import Foundation 
import UIKit 

UIApplicationMain(C_ARGC, C_ARGV, NSStringFromClass(UIApplication), NSStringFromClass(AppDelegate)) 
+2

Non è necessaria la registrazione automatica? – CopperCash

+0

@CopperCash UIApplicationMain non restituisce mai, il pool non può mai essere scaricato. – Kevin